我有两个服务器(服务器1和服务器2),然后每天会有100多个客户端(设备)连接到服务器1上,每个连接都要不断的往服务器1上发送数据,大概发送一个小时后断开。服务器1每收到一个客户端的连接后,会再建立一个连接,连接到服务器2上(这时服务器1即为客户端(设备)的服务器,又为服务器2的客户端),服务器1收到客户端(设备)的数据后,会直接把数据再转发给服务器2.这要,保证服务器1和服务器2 收到的数据是一致的。我的程序实现了这个功能,但只能运行四、五天左右,然后服务器1就连接不上服务器2了(客户端(设备)连接服务器1还正常),而且这时的服务器2怎么都连接不上,用调试器连接出错(连接的端口好像不能用了),必需重起机器后才能再重新连接。 不知道原因是什么?

解决方案 »

  1.   

    给大家转一部分代码。非全部,大家见谅。
    服务器1:
    'GPRS部分************************************************************
    Private Sub wskGPRS_ConnectionRequest(ByVal requestID As Long)
        Dim fg As frmGPRS
        Dim t As Single
        
        Static bln As Boolean
        If bln Then Exit Sub
        bln = True
        bDLSign = False
        
        
        Set fg = New frmGPRS
        Load fg: fg.Hide: fg.FKey = "GG" & gGPRSCnt: gGPRSCnt = gGPRSCnt + 1
        
        
        '接受连接
        fg.Accept requestID
        
       
         '在规定的登录时间内,等待登录成功标志
        t = Timer
    '    wskGPRS.Close
        Do While (Not bDLSign) And (Abs(Timer - t) < DLCS)
            Sleep 50
            DoEvents
        Loop
        If bDLSign Then
            gGPRSs.Add fg, fg.FKey
            '更新主控程序集中器在线状态
            SendZDOnline
        End If
    '    wskGPRS.Listen
        bln = False
    '    '添加节点
    '    UpdateGPRSNode False, gGPRSCnt - 1, wskGPRS.RemoteHostIP
        
    End Sub
    '窗体部分代码
    Public Sub Accept(ByVal requestID As Long)
        On Error Resume Next
        If Winsock1.State <> sckClosed Then Winsock1.Close
        Winsock1.Accept requestID
        
        Winsock2.Connect
        ViewFrame vbCrLf & Now & "建立连接-------------------", ""
        tSource = Timer
        Timer3.Interval = 300
        Timer3.Enabled = True
        
    End SubPrivate Sub Form_Load()
       n_flag = True
       Timer3.Enabled = False
       
        '20090415 连接远程服务器
        If Winsock2.State <> sckClosed Then Winsock2.Close
        Winsock2.Protocol = sckTCPProtocol
        Winsock2.RemoteHost = RemoteHost
        Winsock2.RemotePort = RemotePort
    '   End 20090415
    End Sub服务器2的代码类似于服务器1,只是少了一层转发,就不贴了。需要了再贴吧。