当前位置:编程学习 > VB >>

VB winsock重连不上

winsock建立电脑与串口服务器的TCP连接并成功连接上后(电脑程序为client端),断开后重连却一直无法连接上,且winsock.state一直都是6,不知道什么原因,请大神指教 VB winsock 连接不上 --------------------编程问答-------------------- 问题补充:还有一点比较奇怪,打开程序代码,运行后winsock可以连接上,此时停止运行程序(没关闭程序,还可以编辑),而后再次运行,winsock.state一直为6,连接不上;但如果关闭代码程序,再次打开运行程序,却可以连接上,这是什么原因呢???? --------------------编程问答-------------------- 仅供参考
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
--------------------编程问答-------------------- 检查下LocalPort是什么值 --------------------编程问答-------------------- winsock有个问题,端口在断开之后,似乎要过一小段时间才能再次被使用,我不知道这是什么原因,但是,确实如此

你可以每次重连的时候换一个不同的端口 --------------------编程问答-------------------- 之所以重连不上,很有可能是因为你把LocalPort设为一个固定值,而系统在你断开连接后不会立即释放该端口,所以我让你检查下这个属性,如果设为0的话,会动态分配本地端口,这样你每次连接时本地端口都是不同的,应该就不会出现重连不上的问题了
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,