파이썬으로 소켓 통신하는데 재연결을 어떻게 해야할까요?
파이썬으로 소켓 통신하는 코드를 만들어보고 있습니다
def connect(self, ip, port):
retryCount = 0
retry = True
while(retry):
try:
print ('Connect Server')
self.socket.connect( (str(ip), int(port)) )
retry = False
return 1
except:
print ('Fail')
print ('retry after ')
retry = True
소켓 연결과 관련된 코드 부분입니다
통신이 끊기면 except로 가서 코드가 죽지는 않는데 재연결을 못하고 몇시간을 except만 무한반복합니다
어떻게 해야 다시 연결을 할 수가 있나요?
55글자 더 채워주세요.
1개의 답변이 있어요!
해결방법이 있네요 connect () 메서드를 while 루프 내에 놓고 try-except 문으로 둘러싼 후, 연결이 성공하면 응용 프로그램은 나머지 스크립트로 계속 진행합니다. 그렇지 않으면 몇 초 후에 다시 연결을 시도합니다.
print( "connection lost... reconnecting" ) connected = False #recreate socket clientSocket = socket.socket() while not connected: #attempt to reconnect, otherwise sleep for 2 seconds try: clientSocket.connect( ( host, port ) ) connected = True print( "re-connection successful" ) except socket.error: sleep( 2 ) #continue normal operationshttps://instructobit.com/tutorial/101/Reconnect-a-Python-socket-after-it-has-lost-its-connection