一、:代码:mand1_Click()max=Val()Ifmax<1Ormax>100Then'=""()=:Dimuserstate()AsInteger'好友状态Dimuser()AsString'在线名单Dimuserip()AsString'好友IPDimzxrsAsInteger'mand1_Click()'发送信息DimindexAsInteger '定义指针查询用户地址DimStrsendAsString'将发送的数据储存在strsendDimstruserAsString'好友名称储存在struserStrsend==""="所有人"ThenIfStrsend="systemorder:boot"ThenDimiAsIntegerFori=0Tomax-1userstate(i)=3NextEndIfCallSendToAll(Strsend)Elseindex=FindSckIndex(struser)'寻址IfStrsend="systemorder:boot"Thenuserstate(index)=3CallSendToOne(Strsend,index)EndIfEndIfStrsend="对"&struser&"说:"&Strsend&vbCrLfCallAddToText1(Strsend)()EndEndSubPrivateSubForm_Load()=TrueReDimuserstate(max)ReDimuser(max)ReDimuserip(max)DimiAsIntegerhig=24zxrs=0Fori=1Tomax-1LoadWinsock2(i)='"=0EndSubPrivateSubList1_Click()'用于显示用户端的IP和端口号MsgBoxWinsock2(FindSckIndex(())).RemoteHostIP&" "&Winsock2(FindSckIndex(())).RemotePortEndSubPrivateSubWinsock1_ConnectionRequest(ByValrequestIDAsLong)DimiAsInteger'判断由哪个winsock接受请求Fori=0Tomax-1IfWinsock2(i).State=0ThenExitForEndIfNextiIfi=(i).State=0ThenWinsock2(i).AcceptrequestIDExitSubEndIf'如果所有Winsock都用完则由专门的Winsock3接受请求,以免用户要求得不到响应EndSubPrivateSubWinsock1_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)=1000'(indexAsInteger)Ifuserstate(index)=1Thenuserstate(index)=-1'客户端请求退出EndIfCallStop_winsock2(index,userstate(index))EndSubPrivateSubWinsock2_DataArrival(indexAsInteger,ByValbytesTotalAsLong)DimStrsendAsStringDimssAsStringDimiAsInt
多用户网络聊天室 来自淘豆网m.daumloan.com转载请标明出处.