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