VB中如何使用winsock与另一台计算机连接

2024-11-15 04:35:21
推荐回答(1个)
回答1:

'服务器端,在窗口上创建两个Winsock控件,名字分别为SockServer和SockClient,然后复制以下代码
Private Sub Form_Load()
With SockServer
.LocalPort = 2000 '指定端口号(一般指定1024以上的端口就好)
.Bind
End With
End Sub

'这里处理接收客户端发送来的信息
Private Sub SockClient_DataArrival(ByVal bytesTotal As Long)
Dim Tmp As String
SockClient.GetData Tmp '接收客户端发送来的信息
MsgBox Tmp '显示客户端发来的信息
End Sub

'这里是处理收到的连接请求
Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)
SockClient.Close '防止曾经打开过SockClient
SockClient.Accept requestID '接受客户端的请求
End Sub
'当然服务器端也可以向客户端发送信息,如在窗口上创建一个Command1控件,然后再添加一下代码
Private Sub Command1_Click()
If SockClient.State = 7 Then '判断是否处于连接状态 7表示已经连接
SockClient.SendData "这是服务器端发来的信息"
End If
End Sub

'向客户端添加一个Winsock控件,名为SockClient,一个Command控件名字用默认的Command1,然后复制一下代码

Private Sub Form_Load()
SockClient.RemoteHost = "127.0.0.1" '这里应该填入服务器IP地址,如果是在同一台电脑上可以用127.0.0.1
SockClient.RemotePort = 2000 '这里是设置服务器打开的端口,由于前面服务器端口设为了2000,所以这里也要设置为2000
SockClient.Connect
End Sub

'连接成功后会激活Connect事件
Private Sub SockClient_Connect()
MsgBox "已经连接到了服务器:" & SockClient.RemoteHost
End Sub

'这里是接收服务器发送来的信息
Private Sub SockClient_DataArrival(ByVal bytesTotal As Long)
Dim Tmp As String
SockClient.GetData Tmp
MsgBox Tmp, vbOKOnly, "收到的信息"
End Sub
'这里是向服务器发送信息
Private Sub Command1_Click()
If SockClient.State = 7 Then '如果处于连接状态,则发送数据
SockClient.SendData "这是客户端发来的信息" '发送信息,内容可以任意
End If
End Sub