如何动态加载WINSOCKET数组
在服务器服务,放置两个WINSOCKET控件,一个名称为SocketListener,用来监听客户端的CONNECT请求,另一个名称为SocketServer,其INDEX为0,即为一名为SocketServer的控件数组,用来与客户端 建立连接。
在窗体加载时的代码为:
private sub Form_load()
load SocketServer(0)
SocketListener.localport=10000
SocketListener.listen
end sub
当SocketListener接到第一个客户端的CONNECT请求时,安排SocketServer(0)接收此请求并建立 连接
当SocketListener有接到第二个客户端发出CONNECT请求时,如果判断SocketServer(1)有没有加载?
[解决办法]
Private Sub Form_Load()
'用一个数组控件就可以完成了
'加一个winsock1控件,把Index填上0
Winsock1(0).LocalPort = 10000
Winsock1(0).Listen
End Sub
Private Sub Winsock1_Close(Index As Integer)
Winsock1(Index).Close
End Sub
Private Sub Winsock1_Connect(Index As Integer)
'Connect事件,当客户端连接完成的时候触发
End Sub
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim I As Long
For I = 1 To Winsock1.UBound
If Winsock1(I).State = 0 Then Exit For
Next
If I > Winsock1.UBound Then Load Winsock1(I)
Winsock1(I).Accept requestID
End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'数据到达事件,在此事件中接收处理数据
End Sub
Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
'连接出错,可以在这里加上错误处理代码
Winsock1(Index).Close
End Sub