问题:
1,客户端和服务器端在本地机器上调试的时候连接的成功率很低也就是10%吧不知道为什么,IP和端口号都没错误!
2,客户端在发出连接请求以后,未得到服务器端响应,我在请求连接时(没有推出),为什么出现,"不能在这个状态下连接"的错误,应该怎么解决,多次连接请求!
兄弟们帮忙,谢谢了!
1,客户端和服务器端在本地机器上调试的时候连接的成功率很低也就是10%吧不知道为什么,IP和端口号都没错误!
2,客户端在发出连接请求以后,未得到服务器端响应,我在请求连接时(没有推出),为什么出现,"不能在这个状态下连接"的错误,应该怎么解决,多次连接请求!
兄弟们帮忙,谢谢了!
Option Explicit
Private Sub Form_Load()
Winsock1.Listen
Label2.Caption = "": Label4.Caption = "": Label6.Caption = ""
End Sub
Private Sub Winsock1_Close()
Winsock1.Close
Label2.Caption = "": Label4.Caption = Winsock1.State & "连接关闭": Label6.Caption = ""
Winsock1.Listen
End SubPrivate Sub Winsock1_Connect()
Label4.Caption = "已经建立连接"
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
Label6.Caption = requestID
Label2.Caption = Winsock1.RemotePort
Label4.Caption = Winsock1.State & "正在建立连接"
End Sub
Option Explicit
Private Sub Command1_Click()
Winsock1.Connect
Label2.Caption = Winsock1.RemoteHost
Label4.Caption = Winsock1.State & "正在请求连接"
End Sub
Private Sub Command2_Click()
Winsock1.Close
End SubPrivate Sub Winsock1_Close()
Label4.Caption = Winsock1.State & "关闭连接"
Label2.Caption = ""
End SubPrivate Sub Winsock1_Connect()
Label2.Caption = "连接到" & Winsock1.RemoteHostIP
Label4.Caption = Winsock1.State & "已经连接"
End Sub
再就是你是tcp 协议把。我给你写主要的2个事件
Private intMax As LongPrivate Sub Form_Load()
intMax = 0Winsock1(0).LocalPort = 1080
Winsock1(0).ListenEnd Sub
Private Sub Winsock1_ConnectionRequest(index As Integer, ByVal requestID As Long)
If index = 0 Then intMax = intMax + 1 Load Winsock1(intMax) Winsock1(intMax).LocalPort = 0 Winsock1(intMax).Accept requestID
End IfEnd Sub
Private Sub Winsock1_DataArrival(index As Integer, ByVal bytesTotal As Long)
On Error Resume Next
Dim clientDat As String
Winsock1(index).GetData clientDat, vbStringMsgBox clientDat
End Sub
我使用的是tcp协议!我现在不是想实现多端连接,我现在只是想实现一个客户一个服务器,但是这样也出现了10%的连接成功率,甚至还要低,端口我都在设计时在属性里输入了!
谢谢了!
但是这只解决了一个问题,另一个问题还没有解决,就是:我在机器上运行的时候,第一次启动就有90%的时候不能建立连接,有时候甚至是100%,而且我的代码几乎都是一样的!如果成功建立了连接,我关闭以后,在连接,那成功率就是100%了,我在服务器和客户端都使用了close方法来关闭了连接!连接代码,关闭代码和书上实例几乎是一样,可是连接失败率太高了!不知道为什么!
请帮兄弟解决一下!
winsock.connet
winsock.senddate
这样永远不会成功,应该在事件里写
Private Sub Form_Load()Winsock1.RemoteHost = "192.168.27.104" '服务器ip
Winsock1.RemotePort = "1080" '服务器端口
Winsock1.LocalPort = 0
Winsock1.Connect '连接服务器End SubPrivate Sub Winsock1_Connect() 'Winsock1.Connect 触发
Dim aa As String
On Error GoTo errend
aa = "ok"
Winsock1.SendData "0" & aa
Exit Sub
errend:
MsgBox "连接发生错误!数据发送失败!", vbOKOnly + vbExclamation, "TCP 错误信息"
End Sub