VB winsock重连不上
winsock建立电脑与串口服务器的TCP连接并成功连接上后(电脑程序为client端),断开后重连却一直无法连接上,且winsock.state一直都是6,不知道什么原因,请大神指教 VB winsock 连接不上 --------------------编程问答-------------------- 问题补充:还有一点比较奇怪,打开程序代码,运行后winsock可以连接上,此时停止运行程序(没关闭程序,还可以编辑),而后再次运行,winsock.state一直为6,连接不上;但如果关闭代码程序,再次打开运行程序,却可以连接上,这是什么原因呢???? --------------------编程问答-------------------- 仅供参考Private Sub TimerTTSreconn_Timer()--------------------编程问答-------------------- 检查下LocalPort是什么值 --------------------编程问答-------------------- winsock有个问题,端口在断开之后,似乎要过一小段时间才能再次被使用,我不知道这是什么原因,但是,确实如此
Dim after As Double
Dim TTSrpc As Long
On Error Resume Next
TimerTTSreconn.Enabled = False
MainForm.Caption = "(重新与TTS连接)网关控制节点"
Debug.Print "重新与TTS连接"
If tcpTTS.state <> 0 Then
tcpTTS.Close
after = Now + 5# / 24# / 3600#
Do
DoEvents
If tcpTTS.state = 0 Then Exit Do
If Now > after Then
Debug.Print "wait tcpTTS.state=0 5s,but =" + CStr(tcpTTS.state)
Exit Do
End If
Loop
End If
tcpTTS.RemoteHost = "127.0.0.1"
tcpTTS.RemotePort = 2028
tcpTTS.Connect
after = Now + 5# / 24# / 3600#
Do
DoEvents
If tcpTTS.state = 7 Then Exit Do
If Now > after Then
Debug.Print "Connect TTS failure, try " + CStr(TTSrpc + 1)
Exit Do
End If
Loop
If tcpTTS.state <> 7 Then
TTSrpc = TTSrpc + 1
If TTSrpc = 20 Then
Debug.Print "TTS连接故障"
End If
Else
TTSrpc = 0
End If
MainForm.Caption = "(正在运行)网关控制节点"
End Sub
你可以每次重连的时候换一个不同的端口 --------------------编程问答-------------------- 之所以重连不上,很有可能是因为你把LocalPort设为一个固定值,而系统在你断开连接后不会立即释放该端口,所以我让你检查下这个属性,如果设为0的话,会动态分配本地端口,这样你每次连接时本地端口都是不同的,应该就不会出现重连不上的问题了
补充:VB , 网络编程