VB Winsock控件创建多个连接
(2012-05-23 15:21:52)
标签:
it |
分类: VB编程笔记 |
用VB写的一个简单的服务端程序,
服务器端程序:
Private Sub Form_Load()
End Sub
Private Sub tcpServer_ConnectionRequest(ByVal requestID As
Long)
End Sub
客服端程序
Private Sub Form_Load()
End Sub
Private Sub cmdConnect_Click() '连接按钮
End Sub
运行后,启动服务端,然后启动客户端,点“连接”按钮,客服端端跳出窗口“连接服务器成功”,服务端跳出窗口“有人连接服务端”。表示双方建立了连接。这个时候关闭客户端,然后再启动,点“连接”按钮,就只是跳出连接服务器成功(程序设置不完美)。然后在输入框中输入向服务端发送数据,出现“错误“40006”
所需事物请求的错误协议连接或连接状态”。这个时候发现第二次连接就不行,看来服务端只是支持单个连接,第二次连接相当于,第二个连接,就找不到服务器,这个错误跟没有启动服务端程序的错误是一样,说明客户端找不到服务端。
上面设计的基本服务器只能接受一个连接请求。通过创建控件数组,使用一个控件也可以同时接受多个连接请求。利用这种方法,不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用
Accept 方法。
下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为
0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 事件中,intMax 被设置为
0,数组中第一个控件的 LocalPort 属性被设置为 1001。然后调用控件的 Listen
方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加
intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求。
Private intMax As Long
Private Sub Form_Load()
End Sub
Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
End Sub
前一篇:窗体标题栏居中
后一篇:读取ini配置文件的所有条目