Private Sub Command1_Click()
If Winsock1.State = sckConnected Then Winsock1.SendData Text1.Text
End SubPrivate Sub Command2_Click()
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Bind
Winsock1.Listen
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)If Winsock1.State <> sckClosed Then Winsock1.CloseWinsock1.Accept requestIDEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim strData As StringWinsock1.GetData strData, vbStringText2.Text = Text2.Text + Chr(13) + Chr(10) + strDataEnd Sub
Private Sub Command0_Click()
If Winsock1.State = sckConnected Then Winsock1.SendData Text1.Text
End SubPrivate Sub Command1_Click()
If Winsock1.State <> sckClosed Then Winsock1.CloseWinsock1.ConnectCommand1.Enabled = FalseCommand2.Enabled = True
End SubPrivate Sub Command2_Click()
Command1.Enabled = TrueCommand2.Enabled = FalseWinsock1.CloseEnd Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim str As StringWinsock1.GetData str, vbStringText2.Text = Text2.Text + Chr(13) + Chr(10) + strEnd SubPrivate Sub Winsock1_Connect()MsgBox "连接成功!"End Sub上面那段是服务端的代码!下面是客户端的!
要是有两个客户端的话为什么只能连上一个啊?另外一个连不上的?
If Winsock1.State = sckConnected Then Winsock1.SendData Text1.Text
End SubPrivate Sub Command2_Click()
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Bind
Winsock1.Listen
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)If Winsock1.State <> sckClosed Then Winsock1.CloseWinsock1.Accept requestIDEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim strData As StringWinsock1.GetData strData, vbStringText2.Text = Text2.Text + Chr(13) + Chr(10) + strDataEnd Sub
Private Sub Command0_Click()
If Winsock1.State = sckConnected Then Winsock1.SendData Text1.Text
End SubPrivate Sub Command1_Click()
If Winsock1.State <> sckClosed Then Winsock1.CloseWinsock1.ConnectCommand1.Enabled = FalseCommand2.Enabled = True
End SubPrivate Sub Command2_Click()
Command1.Enabled = TrueCommand2.Enabled = FalseWinsock1.CloseEnd Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim str As StringWinsock1.GetData str, vbStringText2.Text = Text2.Text + Chr(13) + Chr(10) + strEnd SubPrivate Sub Winsock1_Connect()MsgBox "连接成功!"End Sub上面那段是服务端的代码!下面是客户端的!
要是有两个客户端的话为什么只能连上一个啊?另外一个连不上的?
'服务器端. 增加一个Winsock1 index=0Private isWinCount(100) As Boolean '设置服务器只能进行100个客户端确认
Private Sub Form_Load()
For i = 1 To 100
Load Winsock1(i)
isWinCount(i) = True '设置为空闲
Next
Winsock1(0).LocalPort = "4000"
Winsock1(0).Listen
End SubPrivate Sub Winsock1_Close(Index As Integer)
If Index <> 0 Then
isWinCount(Index) = True
Else
Winsock1(0).Close
Winsock1(0).Listen
End If
End SubPrivate Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
Dim cIndex As Long
Winsock1(0).Close
Winsock1(0).Accept requestID
cIndex = 6000 + GetIndex
Winsock1(0).SendData "B" & cIndex '发送空闲端口过去让客户端重新连接
isWinCount(cIndex - 6000) = False
Winsock1(cIndex - 6000).LocalPort = cIndex
Winsock1(cIndex - 6000).Listen
Else
Winsock1(Index).Close
Winsock1(Index).Accept requestID
Winsock1(Index).SendData "F连接成功"
End If
End Sub
Private Function GetIndex() As Long '此方法是取得服务器空闲端口
For i = 1 To 100
If isWinCount(i) = True Then
GetIndex = i
Exit Function
End If
Next
End FunctionPrivate Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strData As String
Winsock1(Index).GetData strData
For i = 1 To 100
If Not isWinCount(i) Then
Winsock1(i).SendData "D" & strData
End If
Next
End Sub
'窗户端 请增加一个文本框. 设置为多行文本, Name=OutTxt
'再增加一个文本框 Name= SendTxt
'再增加一个Winsock1Private Sub Form_Load()
Winsock1.Connect Winsock1.LocalIP, 4000 '因为在一台机器上调试,所以 用到了 Winsock1.localIP.如果在不同机器上,此处用服务器的IP地址。而4000,为服务器打开的端口。可以自己设定
End SubPrivate Sub SendTxt_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Winsock1.SendData SendTxt.Text
SendTxt.Text = ""
End If
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData
Select Case Mid(strData, 1, 1)
Case "B"
Winsock1.Close
Winsock1.Connect Winsock1.LocalIP, Mid(strData, 2) '用重新取得的端口进行连接
Case "F"
OutTxt.Text = OutTxt.Text & Chr(13) & Chr(10) & "系统信息:" & Mid(strData, 2)
Case Else
OutTxt.Text = OutTxt.Text & Chr(13) & Chr(10) & Mid(strData, 2) End Select
End Sub
'你的问题点出在了服务器端只有一个Winsock.一个Winscok只能建立一个连接.如果要有多个连接就要有多个Winsock