winsock控件不可能实现多线程,他只能产生一个winsock线程,加vb主线程一共2个 . 要在vb实现多线程.这个问题...有点难,不过你的问题只需要创建一个winsock控件数组就可以 这样 窗体上 winsock1(0) index=0 程序中 dim bActConn(MAX_CONNECT_NUMBER) as boolean 然后在 Winsock1_ConnectionRequest 写下面代码 dim i as integer for i = 1 to MAX_CONNECT_NUMBER if bactconn(i) = false then exit for next i if i>MAX_CONNECT_NUMBER then msgbox "达到最大连接数":exit sub end if load winsock1(i) winsocki(i).accept requestID bactconn(i)=true然后在Winsock1_Close(Index As Integer) 事件中 winsock1(index).close unload winsock1(index) bactconn(index)=false然后在Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)事件中 就可以根据不同的index识别不同的连接注意winsock1(0)是专门用来listen的, 可以在form_load里面写上 winsock1(0).listen winsock1(1-MAX_CONNECT_NUMBER)动态的load, unload,用来传送数据的
. 要在vb实现多线程.这个问题...有点难,不过你的问题只需要创建一个winsock控件数组就可以
这样 窗体上 winsock1(0) index=0
程序中
dim bActConn(MAX_CONNECT_NUMBER) as boolean
然后在 Winsock1_ConnectionRequest 写下面代码
dim i as integer
for i = 1 to MAX_CONNECT_NUMBER
if bactconn(i) = false then exit for
next i
if i>MAX_CONNECT_NUMBER then
msgbox "达到最大连接数":exit sub
end if
load winsock1(i)
winsocki(i).accept requestID
bactconn(i)=true然后在Winsock1_Close(Index As Integer) 事件中
winsock1(index).close
unload winsock1(index)
bactconn(index)=false然后在Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)事件中
就可以根据不同的index识别不同的连接注意winsock1(0)是专门用来listen的, 可以在form_load里面写上 winsock1(0).listen
winsock1(1-MAX_CONNECT_NUMBER)动态的load, unload,用来传送数据的
如果是用户连接过多比如10000人呢?这样系统的资源还能剩多少???