If StaticNum Mod 10 = 0 Then
    If Tojczx_data.State = sckConnected Then  'communication灯
        MainFrm.Shape1(0).FillColor = vbGreen
    Else
        
        MainFrm.Shape1(0).FillColor = vbRed
'        On Error Resume Next
        Debug.Print MainFrm.Tojczx_data.State
        If Not (WMENC Is Nothing) Then WMENC.Stop: Set WMENC = Nothing
        Can_WriteRecord = True
        Ask6_Con = False
        RemoteControl = False
        MainFrm.ScanFreq.Enabled = True  
        If PathFileExists("d:\music\end.txt") = 0 Then
            Open "d:\music\end.txt" For Output As #1
            Close #1
        End If
        MainFrm.Tojczx_data.Close
        MainFrm.Tojczx_data.Connect  '地址正在使用    End If
End If
这段代码是放在定时器里的(interval=1秒)每当10秒的时候判断一下状态 如果是断开的就主动连接
问题是 第一次运行程序可以顺利连接服务器 但关掉程序在开  再运行到connect 这里就会报"地址正在使用"错误 
1\ 奇怪的是我是先关后开的而且 我看过close后状态的确为0
2\ 如果不把on error resume next屏蔽掉 程序开3分钟自己能连接服务器

解决方案 »

  1.   

    恐怕是这个问题Connect  完后需要时间的,不能马上senddate
      

  2.   

    这是一个本地端口缓冲区来不及释放的问题,不能再用原端口Connect,一般由服务端调用Close,就没问题。所以有两种解决方案:1、客户端发送一个消息,请求退出,服务端收到后,调用Close方法,客户端通过响应Close事件,再进行Connect;2、客户端调用Close方法后,重置本地端口,
    With MainFrm.Tojczx_data
    If .State <> sckClosed Then .Close
    .LocalPort = 0 '将本地端口设为0,由系统自选可用端口
    .RemoteHost = SeverName
    .RemotePort = 9755
    .Connect
    End With
    这样重连就不会有问题,这种方法,实际上是另起炉灶再连接,放心,原端口在系统有机会时,是会自行收回的。