如果有多台计算机,那就稍微复杂一些,客户端程序可以不做改动,而服务器端程序需要略做改动:
Private sub sckserver_connectrequest(Index as Integer,Byval requestid as long)
dim sip as string
dim I as integer
sip=sckserver(0).RemoteHostIP '获得登录者的IP地址
I=1
Do while I<=sckserver.ubound '检查是否已经有该地址的记录
If sckserver(I).RemoteHostIP=sip then '如有,不必加载新的控件
Sckserver(I).Accept requestid
Exit sub
End if
I=I+1
Loop
Load sckserver(I) '否则,加载新的控件
Scksrver(I).accept requestID
End sub
注意到:以上的信息交谈实际上都发生在客户机与服务器之间,如果要做成<nobr οncοntextmenu="return false;" οnmοusemοve="kwM(3);" id="key3" οnmοuseοver="kwE(event,3, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" οnclick="return kwC();" οnmοuseοut="kwL(event, this);" target="_blank">聊天</nobr>室那样,每个人的话都可以被别人“听到”,那就要在服务器端的DataArrival事件中,把接收到的客户机传来的数据,转发给所有客户机即可。
其循环转发信息的代码如下:
For I=1 to sckserver.count
if sckserver(I).state<>sckclosed then
sckserver(I).SendData sdata
end if
next I