在vb中通过winsock控件数组通讯,希望在wisock控件超过3个后就从头开始使用第一个,可是每次超过3再建立连接时都提示我对象已加载,我每次都已经unload了啊,应该怎样才对啊!?求指点!服务器程序:
Dim intmax As IntegerPrivate Sub cmdC1_Click()
frmC1.Show
End SubPrivate Sub cmdC2_Click()
frmC2.Show
End SubPrivate Sub Form_Load()
intmax = 0
Winsock(0).LocalPort = 1001
Winsock(0).Listen
End SubPrivate Sub Timer1_Timer()
Text1.Text = intmax
Text2.Text = Winsock.Count
End SubPrivate Sub Winsock_Close(index As Integer)
Unload Winsock(index)
End SubPrivate Sub Winsock_ConnectionRequest(index As Integer, ByVal requestID As Long)
If intmax = 0 Then
intmax = 1
End If
If intmax >= 3 Then
intmax = 1
End If
intmax = intmax + 1
Load Winsock(intmax)
Winsock(intmax).Accept requestID
MsgBox ("Link is made")
End SubPrivate Sub Winsock_DataArrival(index As Integer, ByVal bytesTotal As Long)
Dim s As String
Winsock(index).GetData s
If s = "!C" Then
Winsock(index).Close
End If
End Sub
客户端程序:
Private Sub Command1_Click()
Winsock.Connect
End SubPrivate Sub Command3_Click()
Winsock.SendData "!C"
End SubPrivate Sub Form_Load()
Label1.Caption = "等待建立连接"
Winsock.RemoteHost = "127.0.0.1"
Winsock.RemotePort = 1001
End Sub
Private Sub Winsock_Close()
Winsock.Close
Label1.Caption = "连接已断开"
End SubPrivate Sub Winsock_Connect()
Label1.Caption = "已经建立连接"
End Sub
Dim intmax As IntegerPrivate Sub cmdC1_Click()
frmC1.Show
End SubPrivate Sub cmdC2_Click()
frmC2.Show
End SubPrivate Sub Form_Load()
intmax = 0
Winsock(0).LocalPort = 1001
Winsock(0).Listen
End SubPrivate Sub Timer1_Timer()
Text1.Text = intmax
Text2.Text = Winsock.Count
End SubPrivate Sub Winsock_Close(index As Integer)
Unload Winsock(index)
End SubPrivate Sub Winsock_ConnectionRequest(index As Integer, ByVal requestID As Long)
If intmax = 0 Then
intmax = 1
End If
If intmax >= 3 Then
intmax = 1
End If
intmax = intmax + 1
Load Winsock(intmax)
Winsock(intmax).Accept requestID
MsgBox ("Link is made")
End SubPrivate Sub Winsock_DataArrival(index As Integer, ByVal bytesTotal As Long)
Dim s As String
Winsock(index).GetData s
If s = "!C" Then
Winsock(index).Close
End If
End Sub
客户端程序:
Private Sub Command1_Click()
Winsock.Connect
End SubPrivate Sub Command3_Click()
Winsock.SendData "!C"
End SubPrivate Sub Form_Load()
Label1.Caption = "等待建立连接"
Winsock.RemoteHost = "127.0.0.1"
Winsock.RemotePort = 1001
End Sub
Private Sub Winsock_Close()
Winsock.Close
Label1.Caption = "连接已断开"
End SubPrivate Sub Winsock_Connect()
Label1.Caption = "已经建立连接"
End Sub
解决方案 »
- VB安装包问题
- 求助:请问用什么组件可以接收Exchange邮件呀(在线等待)
- 请问一下,有人知道怎么做VB程序的配置文件吗?
- 如何获取运行在系统托盘区域的程序图标和标题,比如获取音量控制程序的小喇叭图标和“音量”的提示。求高手指教,帮帮小弟 !!!(在线
- 有没有一种方法,能把表格的内容直接保存到数据库表中呀?
- 如何将网也上的图片接取下来保存到硬盘中?
- ???怎样将WIN98或2000下的开始菜单设成自动隐藏???
- 关于在range中应用自定义变量,高手请进~~
- 用VB编写PC机接受手机短信中的数据怎么编呀?
- 求救:我想做一个类似于ICQ的小东东....
- WebBrowser做的浏览器,如何不发送当前页面信息?(切断域名来路分析)
- VB调用inet向linux上传文档的问题。请大家帮忙!
Private Sub Winsock_Close(index As Integer)
此事件是当远程计算机关闭连接时出现。应用程序应正确使用 Close 方法关闭 TCP 连接。也就上说客户端里关闭连接服务器里才会触发此事件或者说服务器里关闭连接客户端里才会触发此事件。
你要确定的是以下事件已经触发,也就是说你的控件已经卸载:
Private Sub Winsock_Close(index As Integer)
Unload Winsock(index)
End Sub
请问有没有实现过此功能的代码以供参考?急救啊!多谢了!分不够可以加啊!