Q. 파이썬으로 소켓 통신하는데 재연결을 어떻게 해야할까요?

기본 아바타 zpfmal 2019. 01. 24. 조회수 694


파이썬으로 소켓 통신하는 코드를 만들어보고 있습니다

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만 무한반복합니다

어떻게 해야 다시 연결을 할 수가 있나요?

공유하고 보상받기 ♥︎
댓글 0

1개의 답변이 있습니다.

큐레이터 채택
저거슨 답변자인증
BS/개발팀 2019. 01. 25 100%의 채택

해결방법이 있네요 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 operations 

https://instructobit.com/tutorial/101/Reconnect-a-Python-socket-after-it-has-lost-its-connection

댓글 0