Option Explicit
Private MaxIndex As IntegerPrivate Sub Form_Load()
MaxIndex = 0
Winsock(0).Listen
End SubPrivate Sub Winsock_Close(Index As Integer)
Winsock(Index).Close
Unload Winsock(Index)
End SubPrivate Sub Winsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
MaxIndex = MaxIndex + 1
Load Winsock(MaxIndex)
Winsock(MaxIndex).Accept requestID
End If
End SubPrivate Sub Winsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strMsg As String
Winsock(Index).GetData strMsg
MsgBox Index & MaxIndex
End Sub
这段代码能动态加载winsock控件,为什么不能动态卸载啊
msgbox 的值永远是+1的,高手帮忙改下啊当加载的winsock close的时候就卸载这个加载的winsock
Private MaxIndex As IntegerPrivate Sub Form_Load()
MaxIndex = 0
Winsock(0).Listen
End SubPrivate Sub Winsock_Close(Index As Integer)
Winsock(Index).Close
Unload Winsock(Index)
End SubPrivate Sub Winsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
MaxIndex = MaxIndex + 1
Load Winsock(MaxIndex)
Winsock(MaxIndex).Accept requestID
End If
End SubPrivate Sub Winsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strMsg As String
Winsock(Index).GetData strMsg
MsgBox Index & MaxIndex
End Sub
这段代码能动态加载winsock控件,为什么不能动态卸载啊
msgbox 的值永远是+1的,高手帮忙改下啊当加载的winsock close的时候就卸载这个加载的winsock
以后侦听到新的连接请求后可以重用该控件,也可以开一个定时器定期卸载状态为关闭的控件。
MaxIndex 毫无意义,直接用 Winsock.UBound 就能取得。
Option Explicit
Private MaxIndex As IntegerPrivate Sub Command1_Click()
MsgBox Winsock.Count '在这判断有几个winsock实例。
End SubPrivate Sub Form_Load()
MaxIndex = 0
Winsock(0).LocalPort = 1001
Winsock(0).Listen
Form2.Show
End SubPrivate Sub Winsock_Close(Index As Integer)
Winsock(Index).Close
Unload Winsock(Index)
End SubPrivate Sub Winsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
MaxIndex = MaxIndex + 1
Load Winsock(MaxIndex)
Winsock(MaxIndex).Accept requestID
End If
End SubPrivate Sub Winsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strMsg As String
Winsock(Index).GetData strMsg
MsgBox Index & MaxIndex
End Sub
'----------------------------------------'form2 code
Option ExplicitPrivate Sub Command1_Click() '点击进行连接,然后到form1看有几个winsock。
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 1001
Winsock1.Connect
'
End SubPrivate Sub Command2_Click()
Winsock1.SendData "gggggggggggg"
End SubPrivate Sub Command3_Click()
Winsock1.Close '在这关闭连接,再到form1里看有几个winsock
End Sub