별도의 호스트에서 다른 Python 응용 프로그램과 통신하기 위해 간단한 TCP 소켓을 여는 Python 응용 프로그램이 있습니다. 때로는 프로그램이 오류를 일으키거나 직접 죽일 것이고, 어느 경우 든 알 수없는 시간 동안 소켓이 열린 채로 남아있을 수 있습니다.죽은 프로그램에 의해 열려있는 소켓을 닫는 방법?
내가이 오류는 프로그램 실행으로 이동 다음 시간 :
socket.error: [Errno 98] Address already in use
지금 프로그램이 항상 동일한 포트를 사용하려고를, 그래서 여전히 열려있는 것처럼 나타납니다. 프로그램을 백그라운드에서 실행하지 않고 내 주소가 아직 사용 중인지 확인하고 확신합니다.
그래, 내 프로그램이 즉시 다시 사용할 수 있도록 어떻게 수동으로 (또는 다른 방법으로) 소켓/주소를 닫을 수 있습니까?
업데이트 나는 socket(7)
페이지를 체크 아웃 SO_REUSEADDR 보았다 마이크의 답변에 따라
:
SO_REUSEADDR Indicates that the rules used in validating addresses supplied in a bind(2) call should allow reuse of local addresses. For AF_INET sockets this means that a socket may bind, except when there is an active listening socket bound to the address. When the listen‐ ing socket is bound to INADDR_ANY with a specific port then it is not possible to bind to this port for any local address. Argument is an integer boolean flag.
이것을 SO로 이동하는 것에 반대 하시겠습니까? 그것은 완전히 프로그래밍 문제가되어 결국 어쩌면 더 이해할 수 있습니다. –
소켓을 닫으려는 리눅스 명령을 생각하고 있었기 때문에 나는이 글을 게시하지 않았습니다. 프로그래밍 자료에 동의합니다. 제목이 파이썬 프로그램임을 반영하도록 변경 될 수 있습니다. –
@ Mr. Shickadance가 마이 그 레이션 된 경우 제목이 필요하다고 생각하면 제목을 다시 말해야합니다. – xenoterracide