我们前面的程序都只说到使用Winsock制作一对一的连接,实际上我们使用控件数组的话,那么可以制作一个多客户连接的服务器。不过本质上还是一对一,不过是服务器上不只一个Windsock而已。
我们在窗体上放一个Winsock,将他的Name改为sckServer,index属性改为0。然后就是代码了:
clientCount As Integer '定义一个窗体级变量来记录客户的连接数。
Private Sub Form_Load()
clientCount = 0
sckServer(0).LocalPort = 2000 '设置好侦听端口
sckServer(0).Listen '开始侦听
End SubPrivate Sub sckServer_ConnectionRequest (Index As Integer, ByVal requestID As Long)
If Index = 0 Then
clientCount = clientCount + 1 '客户请求多一个
Load sckServer(clientCount) '载入一个服务端为新增的客户服务
sckServer(clientCount).LocalPort = 0 '侦听端口为随机,不能设为2000,因为有sckServer(0)在使用了。
sckServer(clientCount).Accept requestID '接受请求
End If
End Sub
看了代码明白了吧,所谓多客户服务器就是多个Winsock服务端在为客户服务而已,当然我们不用同步的时候也可以用一个Winsock来连续的关闭、连接来做多客户服务器也是可以的。