读书人

请问关于用WINSOCK监听的时候为什么需

发布时间: 2012-12-26 14:39:28 作者: rapoo

请教关于用WINSOCK监听的时候为什么需要判断INDEX
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
Load txtData(intMax)
End If
End Sub

请教一下各位申请连接的时候SOCK控件的INDEX都是为0,那么为什么还要在事件里面还需要判断SOCK控件的INDEX是否为0呢?
[最优解释]

引用:
只监听一个商品的时候连接的时候无论如何都应该是连接的SOCKS0吧!
或者那个判断是用于同时监听两个端口的时候用来区分是哪个端口进行连接的?

监听两个端口,你得有两个socket,就跟打电话一样,既然你在个一个人打电话了,那么你同时当然不可能用同一个电话给另一个人打。
[其他解释]
因为你只有一个人在用的时候,或者是你在调试的时候,只有一个用户,index当然都是0.如果有多个用户同时使用,index就不会只是0了。
[其他解释]
是的。一个客户端都不用建立控件数组,一个winsock就OK了。
[其他解释]
没人理我呢
[其他解释]
以防万一不是零?
或者以后要改为比如用Index0和Index1同时监听两个端口用的时候好区分是哪个端口来的请求?
[其他解释]
程序中的控件应该是一个控件数组。很可能可以动态创建控件。标号为0的控件负责监听和接收请求。创建其它控件则负责比如文件传输之类的工作。这个是支持多连接的网络传输常用的方法。
[其他解释]
意思就是说在本机连接的时候都是处于0号,但是多个连接并发的时候就不一定是触发的0号SOCKS了?
[其他解释]
只监听一个商品的时候连接的时候无论如何都应该是连接的SOCKS0吧!
或者那个判断是用于同时监听两个端口的时候用来区分是哪个端口进行连接的?
[其他解释]
也就是说如果我只监听一个端口作为客户端连接的依据的话那么就不需要判断是否是SOCKS 0 控件吧

读书人网 >VB

热点推荐