|
利用Winsock控件实现局域网通信(一)(2) 这只是最简单的情况,如果有多台计算机,那就稍微复杂一些,客户端程序可以不做改动,而服务器端程序需要略做改动: 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 注意到:以上的信息交谈实际上都发生在客户机与服务器之间,如果要做成聊天室那样,每个人的话都可以被别人“听到”,那就要在服务器端的DataArrival事件中,把接收到的客户机传来的数据,转发给所有客户机即可。 其循环转发信息的代码如下: For I=1 to sckserver.count if sckserver(I).state<>sckclosed then sckserver(I).SendData sdata end if next I 怎么样,这样我们就作好了自己的通信软件! 不过,不知大家注意到没有,上述程序都需要有一台计算机做为服务器,但如果我们的局域网中没有哪台计算机是可以常开的,也就是说,如果服务器端程序没有运行的话,其他客户端程序也没有办法通信。而这种情况却可能是经常出现的!至少,我所用的局域网那就是这样的。难道这样我们就无法享受局域网通信的乐趣了吗?
|