繁体中文
设为首页
加入收藏
当前位置:程序开发首页 >> Visual Basic >> VB IGMP

VB IGMP

2005-01-09 20:42:24  作者:COKING  来源:互联网  浏览次数:11  文字大小:【】【】【
简介:Option Explicit'*******************IGMP************************Private Type SockAddr     sin_family As Integer    sin_port As Integer    sin_addr ...
关键字:IGMP VB

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

责任编辑:admin
相关文章