读书人

服务端多连接的疑惑,该如何解决

发布时间: 2012-03-24 14:00:46 作者: rapoo

服务端多连接的疑惑
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的控件去应答,所以根本就不冲突,你的问题从何而来?

读书人网 >VB

热点推荐