最近用VB做通讯研究,在里面用到了一个WINSOCK控件,然后作了一个服务器端代码如下:
Private Sub Form_Load()
wsServer.Listen
txtOutput.Text = "服务器激活了!"
End SubPrivate Sub wsServer_ConnectionRequest(ByVal requestID As Long)
If wsServer.State <> sckClosed Then
wsServer.Close
End If
wsServer.Accept requestID
End SubPrivate Sub wsServer_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
wsServer.GetData strData
txtOutput.Text = txtOutput.Text & vbCrLf & strData
End Sub随后做了个客户端,代码如下;Private Sub Form_Load()
Winsock1.Connect "192.168.16.31", 5052
End SubPrivate Sub Text1_Change()
Winsock1.SendData Text1.Text
End Sub
运行以后客户端成功发送消息给服务器端,但是一但关闭客户端以后,在运行就不能与服务器断连接通信了,换个IP的客户端还是不行。请问这是为什么,有什么解决办法没有!错误提示是所需事物的错误协议或连接状态,错误代码是40006。虚心求教中........
Private Sub Form_Load()
wsServer.Listen
txtOutput.Text = "服务器激活了!"
End SubPrivate Sub wsServer_ConnectionRequest(ByVal requestID As Long)
If wsServer.State <> sckClosed Then
wsServer.Close
End If
wsServer.Accept requestID
End SubPrivate Sub wsServer_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
wsServer.GetData strData
txtOutput.Text = txtOutput.Text & vbCrLf & strData
End Sub随后做了个客户端,代码如下;Private Sub Form_Load()
Winsock1.Connect "192.168.16.31", 5052
End SubPrivate Sub Text1_Change()
Winsock1.SendData Text1.Text
End Sub
运行以后客户端成功发送消息给服务器端,但是一但关闭客户端以后,在运行就不能与服务器断连接通信了,换个IP的客户端还是不行。请问这是为什么,有什么解决办法没有!错误提示是所需事物的错误协议或连接状态,错误代码是40006。虚心求教中........
解决方案 »
- VB代码问题
- VB MSHFlexGrid 分页和排序问题,分不够可以再加,只要问题能解决
- vb调用.dll文件时出现类型错误...急呀,在线等待中...
- 多线程的DLL中,可不可以异步的调用VB中的方法?如果这些方法需要和界面交互呢?
- 有Toolbar的MDI窗体下,加载一个子窗体,MDI窗体的菜单竟然不见了!关闭子窗体一切OK!!!
- 我在做一个ACTIVEX控件,如何做到在一个控件中包另一个控件.
- 请问组件(COM)和控件有什么不同谢谢!
- 怎样在 Datagrid 控件中删除一行 ?
- 怎样编写vb程序,使系统启动后自动加载上??急!
- 哎,小妹我又没辙了
- 如何将图片保存在SQL数据库的表中,最好使用ADODC的方式,烦请高手指点(最好能有部分代码)
- 大家平时最喜欢玩的益智类游戏是什么?
Private Sub Form_Load(Byval Index As Integer)
wsServer(0).Listen
txtOutput.Text = "服务器激活了!"
End SubPrivate Sub wsServer_ConnectionRequest(Byval Index As Integer, ByVal requestID As Long)
If wsServer.Count > 1 Then
If wsServer(1).State <> sckClosed Then
wsServer(1).Close
UnLoad wsServer(1)
End If
End If
Load wsServer(1)
wsServer(1).LocalPort = 0
wsServer(1).Accept requestID
End SubPrivate Sub wsServer_DataArrival(Byval Index As Integer, ByVal bytesTotal As Long)
Dim strData As String
If Index Then
wsServer(Index).GetData strData
txtOutput.Text = txtOutput.Text & vbCrLf & strData
End If
End Sub这样,服务端 Winsock 成员 0 始终用于侦听,1 用于通讯。