IP是正确的,改了127.0.0.1也不行,是不是winsock.ocx的原因? microsoft winsock control 6.0的控件文件是mswinsck.ocx? 是不是.ocx有误?
你试一下一下代码:服务器端: Private Sub Form_Load() Winsock1.LocalPort = 1001 Winsock1.Listen 'form2.Show End SubPrivate Sub Text1_Change() Winsock1.SendData Text1.Text End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long) If Winsock1.State <> sckClosed Then MsgBox ("连接错误") Winsock1.Close End If Winsock1.Accept requestID End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim strdata As String Winsock1.GetData strdata Text2.Text = strdata End Sub 工作站端: Private Sub Command1_Click() Winsock1.Connect End SubPrivate Sub Form_Load() Winsock1.RemoteHost = "127.0.0.1" Winsock1.RemotePort = 1001 End SubPrivate Sub Text1_Change() Winsock1.SendData Text1.Text End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim strdata As String Winsock1.GetData strdata Text2.Text = strdata End Sub严格意义上说,这段代码不是很合理,当我已经调试通过。
microsoft winsock control 6.0的控件文件是mswinsck.ocx?
是不是.ocx有误?
Private Sub Form_Load()
Winsock1.LocalPort = 1001
Winsock1.Listen
'form2.Show
End SubPrivate Sub Text1_Change()
Winsock1.SendData Text1.Text
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then
MsgBox ("连接错误")
Winsock1.Close
End If
Winsock1.Accept requestID
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strdata As String
Winsock1.GetData strdata
Text2.Text = strdata
End Sub
工作站端:
Private Sub Command1_Click()
Winsock1.Connect
End SubPrivate Sub Form_Load()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 1001
End SubPrivate Sub Text1_Change()
Winsock1.SendData Text1.Text
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strdata As String
Winsock1.GetData strdata
Text2.Text = strdata
End Sub严格意义上说,这段代码不是很合理,当我已经调试通过。
因为我们这里的 127.0.0.1 代表本机器 ,localhost 和remotehost 有相同端口,数据在传输过程中同时(真正的同时)存在两个进程,传输和接收.
本人用UDP或者TCP连接的时候,有时会出错而中断程序所以最好检查一下网络连接(物理)和协议的属性
下一步是:服务器端和客户端同时打开,连接可以使用,可是只关闭客户端的程序,再打开就不能边接上,state状态是:正在连接和错误。
是不是要在程序关闭的时侯加点什么?winsock.close?小弟试了一下,不行。
Client端要在程序退出的时候调用Close方法