)
tcpServer.Close
End Sub
通过上面的步骤我们创建了一个简单的服务器端应用程序。为了使它能够工作,还必须为它创建一个客户端的应用程序。
2.3 创建一个 TCP客户端(Socket客户)
1)在项目中添加一个新的窗体,将其命名为frmClient。在窗体中添加一个Winsock控件,并将其命名为tcpClient。在frmClient中添加两个TextBox控件,将第一个命名为txtSend,第二个命名为txtOutput。在窗体上放一个CommandButton控件,并将其命名为cmdConnect。
2)将CommandButton控件的标题改为“连接”。
3)在窗体中添加如下的代码。
Private Sub Form_Load()
''Winsock控件名字为tcpClient。
''注意:要指定远程主机,可以使用IP地址(例如:“121.111.1.1”),
''也可以使用
计算机的别名,如下所示:
tcpClient.RemoteHost = "HostServer1"
tcpClient.RemotePort = 2000
End Sub
要创建客户连接服务器,首先要设置服务器主机名,如IP地址、域名或
计算机名等,然后设定服务端口号,最后连接到服务器上。在程序中:
RemoteHost属性表示服务器主机名;
RemotePort属性表示服务器端口号。
Private Sub cmdConnect_Click()
''调用Connect方法,初始化连接。
tcpClient.Connect
End Sub
Connect方法连接到服务器;
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 tcpClient_Close(Index As Integer)
tcpClient.Close
End Sub
至此,我们创建了一个简单的客户/服务器模式的应用程序。我们可以将两者都运行起来:运行项目,然后单击“连接”。在两个窗体之一的txtSendData文本框中键入文本,可以看到同样的文字将出现在另一个窗体的txtOutput文本框中(如图2.2所示)。
图2.2
2.4 创建多客户服务器,接受多个连接请求
上面设计的基本服务器只能接受一个连接请求。通过创建控件数组,使用一个控件也可以同时接受多个连接请求。利用这种方法,不再需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后,在新的实例上调用Accept方法。
下面的代码假定名字为sckServer的窗体上有一个Winsock控件,它的Index属性被设置为0;控件是控件数组的一部分。在声明部分,声明了一个模块级的变量intMax。在窗体的Load事件中,intMax被设置为0,数组中第一个控件的LocalPort属性被设置为2000。然后调用控件的Listen方法,使之成为“侦听”控件。在连接请求到达时,代码将检测Index是否为0(“侦听”控件的值)。如果为0,侦听控件将增加intMax的值,并使用该号码来创建新的控件实例。然后使用新的控件实例接受连接请求。
Private intMax As Long
Private Sub Form_Load()
intMax = 0 &n