Private Sub Form_Load() ' Set the LocalPort property to an integer. ' Then invoke the Listen method. tcpServer.LocalPort = 1001 tcpServer.Listen frmClient.Show ' Show the client form. End Sub Private Sub tcpServer_ConnectionRequest _ (ByVal requestID As Long) ' Check if the control's State is closed. If not, ' close the connection before accepting the new ' connection. If tcpServer.State <> sckClosed Then _ tcpServer.Close ' Accept the request with the requestID ' parameter. tcpServer.Accept requestID End Sub
Private Sub txtSendData_Change() ' The TextBox control named txtSendData ' contains the data to be sent. Whenever the user ' types into the textbox, the string is sent ' using the SendData method. tcpServer.SendData txtSendData.Text End Sub
Private Sub tcpServer_DataArrival _ (ByVal bytesTotal As Long) ' Declare a variable for the incoming data. ' Invoke the GetData method and set the Text ' property of a TextBox named txtOutput to ' the data. Dim strData As String tcpServer.GetData strData txtOutput.Text = strData End Sub
上面就是创建一个简单的服务端应用程序的过程。然而,要完成整个过程,你还得创建一个客户端程序。
创建TCP客户端程序
在工程中添加一个新的窗体(form),并命名为frmClient;
将窗体的标题(caption)改为TCP Client;
添加一个Windsock控件到窗体中,命名为tcpCllient;
添加2个文本框控件到frmClient窗体,分别命名为txtSend和txtOutput;
添加一个按钮控件(CommandButton)到窗体,命名为cmdConnecti;
将按钮控件标题(caption)改为Connect;
在窗体中添加下面代码:
注:确保将远程主机属性(RemoteHost property)改为你的计算机别名。
Private Sub Form_Load() ' The name of the Winsock control is tcpClient. ' Note: to specify a remote host, you can use ' either the IP address (ex: "121.111.1.1") or ' the computer's "friendly" name, as shown here. tcpClient.RemoteHost = "RemoteComputerName" tcpClient.RemotePort = 1001 End Sub
Private Sub cmdConnect_Click() ' Invoke the Connect method to initiate a ' connection. tcpClient.Connect End Sub
Private Sub txtSendData_Change() tcpClient.SendData txtSend.Text End Sub
Private Sub tcpClient_DataArrival _ (ByVal bytesTotal As Long) Dim strData As String tcpClient.GetData strData txtOutput.Text = strData End Sub
Private Sub Form_Load() intMax = 0 sckServer(0).LocalPort = 1001 sckServer(0).Listen End Sub
Private Sub sckServer_ConnectionRequest _ (Index As Integer, ByVal requestID As Long) If Index = 0 Then intMax = intMax + 1 Load sckServer(intMax) sckServer(intMax).LocalPort = 0 sckServer(intMax).Accept requestID Load txtData(intMax) End If End Sub
Private Sub Form_Load() ' The control's name is udpPeerA With udpPeerA ' IMPORTANT: be sure to change the RemoteHost ' value to the name of your computer. .RemoteHost= "PeerB" .RemotePort = 1001 ' Port to connect to. .Bind 1002 ' Bind to the local port. End With frmPeerB.Show ' Show the second form. End Sub
Private Sub txtSend_Change() ' Send text as soon as it's typed. udpPeerA.SendData txtSend.Text End Sub
Private Sub udpPeerA_DataArrival _ (ByVal bytesTotal As Long) Dim strData As String udpPeerA.GetData strData txtOutput.Text = strData End Sub
创建第二个UDP连接端
添加标准窗体到工程中;
将窗体名改为frmPeerB;
将窗体标题改为Peer B;
在窗体中添加一个Windsock控件并命名为udpPeerB;
在属性页中单击Protocol,改为UDPProtocol;
添加2个文本框到窗体中,分别命名为txtSend和txtOutput;
在窗体中添加下面代码:
Private Sub Form_Load() ' The control's name is udpPeerB. With udpPeerB ' IMPORTANT: be sure to change the RemoteHost ' value to the name of your computer. .RemoteHost= "PeerA" .RemotePort = 1002 ' Port to connect to. .Bind 1001 ' Bind to the local port. End With End Sub
Private Sub txtSend_Change() ' Send text as soon as it's typed. udpPeerB.SendData txtSend.Text End Sub
Private Sub udpPeerB_DataArrival _ (ByVal bytesTotal As Long) Dim strData As String udpPeerB.GetData strData txtOutput.Text = strData End Sub