소켓으로 서버에서 클라이언트로 파일을 보내려고 합니다.
프로그램을 GUI없이 그냥 실행하면 send도 recv도 아무런 문제 없이 돌아갑니다.
근데 클래스로 만들어서 GUI에서 실행하면 recv 부분 루프 부분에서 멈춰버리더라구요.
그래서 스레드를 사용하니까 GUI에서도 멈추치는 않는데
대신 클라이언트가 소켓이 send한 파일을 recv를 하지 못합니다.
클라이언트개 대기중일 때 대기중이라는 메시지를 출력하게 해놓았는데
대기중이라고 메시지는 정상적으로 출력됩니다만 받지를 못합니다.
send를 추가로 보낼때마다 계속해서 대기중 메시지만 하고 받지를 않습니다.
좀 더 정확히 말씀드리자면 이것저것 살펴본 결과 아래 recvData 메소드에서
if not data:
break
부분이 작동하지 않는 것 같습니다,
이부분은 아래 코드부분에서 좀더 자세히 말씀드리겠습니다.
서버-클라이언트 연결 이후 보내고 받는 부분 코드는 이렇습니다.
---------서버 클래스 중에서----------(GUI에서 서버 소켓 객체 생성)
---------클라이언트 클래스 중에서----------(GUI에서 클라이언트 소켓 객체 생성)
----------------------------------------------------
GUI에서 버튼 클릭 시 recvData 메소드를 불러옵니다.
-----------버튼 클릭 메소드 중에서--------------
self.C_socket.file_open('./text.txt')
t = threading.Thread(target = self.C_socket.recvData)
t.start()
-----------------------------------------------------------------------------
혹시 제가 스레드나 다른 부분에서 잘못한 부분이 있을까요??
조언좀 부탁드립니다.