winsock建立電腦與串口服務器的TCP連接并成功連接上后(電腦程式為client端),斷開后重連卻一直無法連接上,且winsock.state一直都是6,不知道什么原因,請大神指教
uj5u.com熱心網友回復:
問題補充:還有一點比較奇怪,打開程式代碼,運行后winsock可以連接上,此時停止運行程式(沒關閉程式,還可以編輯),而后再次運行,winsock.state一直為6,連接不上;但如果關閉代碼程式,再次打開運行程式,卻可以連接上,這是什么原因呢????uj5u.com熱心網友回復:
僅供參考Private Sub TimerTTSreconn_Timer()
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
uj5u.com熱心網友回復:
檢查下LocalPort是什么值uj5u.com熱心網友回復:
winsock有個問題,埠在斷開之后,似乎要過一小段時間才能再次被使用,我不知道這是什么原因,但是,確實如此你可以每次重連的時候換一個不同的埠
uj5u.com熱心網友回復:
之所以重連不上,很有可能是因為你把LocalPort設為一個固定值,而系統在你斷開連接后不會立即釋放該埠,所以我讓你檢查下這個屬性,如果設為0的話,會動態分配本地埠,這樣你每次連接時本地埠都是不同的,應該就不會出現重連不上的問題了uj5u.com熱心網友回復:
http://blog.059505.com/winsock-sckconnecting/貼出來:(解決方法)
Function ConnectSock() As Boolean
On Error GoTo ToExit '打開錯誤陷阱
DoEvents
With Winsocket
If .State <> 0 Then .Close
If .State = 0 Then
.RemoteHost = "127.0.0.1"
.RemotePort = 8885
.Connect
Me.SetfrmMsg "等待連接..."
Do
DoEvents
Call DeLay(2)
If .State = 6 Then
.Close
.Connect
End If
If .State = 7 Then Exit Do
If .State <> sckConnected Then Me.SetOutMsg "連接失敗:" & .State: Exit Function
Loop
Me.SetfrmMsg
End If
.SendData SendMessageInfo$
End With
ConnectSock = True
ToExit:
If Err Then
Mee.SetOutMsg Err.Description & "ConnectSock(...)"
End If
End Function
Sub DeLay(t As Integer)
Dim i As Long
Dim tt As Long
tt = t * 100000
For i = 0 To tt
DoEvents
Next
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/130492.html
標籤:網絡編程
上一篇:K3BOS 二次開發
