服务端多连接的疑惑
Private intMax As Long
Private Sub Form_Load()
intMax = 0
sckServer(0).LocalPort = 1001
sckServer(0).Listen
End Sub
Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load sckServer(intMax)
sckServer(intMax).LocalPort = 0
sckServer(intMax).Accept requestID
End If
End Sub
这是别人的一段代码,目的是使服务端可以接受多个连接,我有几点疑惑
1、加入增加了新的sckServer控件,为什么上面代码中没有用该控件的listen方法?不用的话不是不能监听端口吗?也就是不能建立连接啊
2、一个服务端的winsock控件如果已经和客户端建立了连接,那么是不是不能再接受另外其他的客户的连接请求?除非把他关闭?
没分了 啊
[解决办法]
注意到Accept方法没.
这个方法是将新来的连接使用另一个WINSOCK控件去应答.
所以只需要有一个控件进行监听,然后不断地把请求发送给别的控件进行应答就行了.
就像一个前台MM:)
[解决办法]
那个原因是因为accept的控件需要是关闭状态的控件.
如果不关闭就无法进行应答.
一对一的话只能如此.
[解决办法]
而且,既然是一对一,那CLOSSE了又没啥问题,反正是一对一.
而如果是一对多,又不可能让用于LISTEN的控件去应答,所以根本就不冲突,你的问题从何而来?