资源描述:
《初始化winsock target=_blank》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、初始化Winsocktarget=_blank1、初始化Winsockrc=WSAStartup(wVersionRequested,WSAData)Ifrc<>0ThenMsgBox("RC:"&rc&"Unabletostartwinsocks"&",Error"&Err.LastDllError)MsgBox"WindowsSocketsnotinitialized.Error:"&Err.LastDllError WSACleanupelse'创建一个事件用来获得数据msg_sock=INVALID_SOCKEThEvent=WSACreateEventIf
2、hEvent=0ThenMsgBox"Failedtocreateevent.Error:"&Err.LastDllErrorEndIfEndIf2、创建一个套接字,获得WinSock句柄 msg_sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)Ifmsg_sock=INVALID_SOCKETThenMsgBox"Couldn'tcreatesocket().Error:"&Err.LastDllErrorEndif3、建立本地地址,并配置端口 IfLen(txtRemotePort.Text)>0ThenIfIsNumeri
3、c(txtRemotePort.Text)Thenaddr.sin_port=htons(CLng(txtRemotePort.Text))ElseMsgBox"您没有输入有效远程端口号,确认后重数!"ExitSubEndIfElseMsgBox"您没有输入远程端口号,确认后重数!"ExitSubEndIfaddr.sin_family=AF_INETIfLen(txtLocalPort.Text)>0ThenIfIsNumeric(txtLocalPort.Text)Thenaddr.sin_port=htons(CLng(txtLocalPort.Text))El
4、seMsgBox"您没有输入有效本地端口,确认后重数!"ExitSubEndIfElseMsgBox"您没有输入本地端口号,确认后重数!"ExitSubEndIf addr.sin_addr=INADDR_ANY4、设定是否能多个进程绑定到同一个端口 dwyes=1 dwRet=setsockopt(msg_sock,SOL_SOCKET,SO_REUSEADDR,dwyes,LenB(dwyes))IfdwRet=SOCKET_ERRORThenMsgBox"SO_REUSERADDRfailed.Error:"&Err.LastDllErrorEndIf5、
5、设定是否进行广播 dwyes=1 dwRet=setsockopt(msg_sock,SOL_SOCKET,SO_BROADCAST,dwyes,LenB(dwyes))IfdwRet=SOCKET_ERRORThenMsgBox"SO_BROADCASTfailed.Error:"&Err.LastDllErrorEndIf6、绑定到socket dwRet=bind(msg_sock,addr,Len(addr))IfdwRet=SOCKET_ERRORThen MsgBox"Couldn'tbind()tosocketlocally.Error:"&Er
6、r.LastDllError closesocket(msg_sock) msg_sock=INVALID_SOCKET Endif7、向远程地址发送数据 remote_addr.sin_family=AF_INET' IfLen(txtRemotePort.Text)>0Then remote_addr.sin_port=htons(CLng(txtRemotePort.Text)) Else MsgBox"您没有输入远程端口号!" ExitSub EndIf IfLen(txtRemotePeer.Text)>0Then remote_addr.
7、sin_addr=GetHostByNameAlias(txtRemotePeer.Text) Else MsgBox"您没有远程服务器地址!" ExitSub EndIf dwRet=sendto(msg_sock,ByValtmps,256,0,remote_addr,LenB(remote_addr))IfdwRet=SOCKET_ERRORThenMsgBox"sendtofailed.Error:"&Err.LastDllErrorEndIf8、当定时器启动时,触发事件FD_READ dwRc=WSAEventSelect(msg