这是一个客户端尝试连接或重新连接服务器的函数:-
while True:
func()
def func(self):
TxData = 0
if self.hConDat > -1:
TxData = 1
else:
self.hConDat = self.OpenTcpIpDatCom(self.stIpAdr, int(self.DatPort))
TxData = 1
我试图在这里建立联系。这种情况只发生一次,并且在连接中断时重复
Ret = Init_func()
if TxData > 0:
try:
RxBytes = self.RadDatSocket.recv(1028)
if len(RxBytes) == 1028):
self.prev_RxBytes= RxBytes
except Exception:
print("Error in Arm_ReadFrm recv: Exception raised")
return Ret
while len(RxBytes) < (1028):
LenData = len(RxBytes)
RxBytes = RxBytes + self.RadDatSocket.recv(int(1028)) # recev from Socket
end=time.time()
if end-start > 1: # timeout here of 1 sec
RxBytes=self.prev_RxBytes
self.bus_err_flag=1
break
在这一部分中,软件进入while循环以不跳过任何数据,并在no>;数据接收时间为1秒
if self.bus_err_flag == 0: # The receonnection option is chosen
self.hConDat= 1 # trying to set reconnect flag here
else:
self.hConDat=-1
self.bus_err_flag=0
Function 'func()' ends here---------------------------------
这里,hConDatFlag设置为在超时时重新建立与服务器的连接
我的问题是我总是在一段时间后超时,当我尝试重新连接时,我的套接字总是显示一个异常——“socket-error”,并且从不重新连接。这是我的插座连接代码:-
def OpenTcpIpDatCom(self, IpAdr, Port):
try:
self.RadDatSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.RadDatSocket.settimeout(2)
self.RadDatSocket.connect((IpAdr, Port))
print('trying to connect to Server')
hConDat = 1
except socket.timeout:
hConDat = -1
print("Socket timed out")
except socket.error:
hConDat = -1
print("socket error")
return hConDat
如果有人告诉我我没有正确地重新连接客户机,或者有其他重新连接的方法,我会很高兴
目前没有回答
相关问题 更多 >
编程相关推荐