programing

Python [Errno 98] 이미 사용중인 주소

nasanasas 2020. 10. 12. 07:36
반응형

Python [Errno 98] 이미 사용중인 주소


내 Python 소켓 프로그램에서 가끔 Ctrl-C. 이렇게하면을 사용하여 연결을 닫습니다 socket.close().

그러나 다시 열려고 할 때 1 분 정도 기다려야 다시 연결할 수 있습니다. 소켓을 올바르게 닫는 방법은 무엇입니까? 아니면 이것이 의도 된 것입니까?


예, 의도 된 것입니다. 여기에서 자세한 설명을 읽을 수 있습니다 . 소켓에서 SO_REUSEADDR 옵션을 설정하여이 동작을 무시할 수 있습니다. 예를 들면 :

sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

$ ps -fA | grep python
501 81211 12368   0  10:11PM ttys000    0:03.12  
python -m SimpleHTTPServer

$ kill 81211

SocketServer 모듈에서 TCPServer, UDPServer 또는 해당 하위 클래스를 사용하는 경우 다음 클래스 변수를 설정할 수 있습니다 (서버를 인스턴스화하기 전에).

SocketServer.TCPServer.allow_reuse_address = True

( SocketServer.ThreadingTCPServer 를 통해 -프로그램 재시작 후 주소에 바인딩 할 수 없음 )

이로 인해 init (생성자)가 다음을 수행합니다.

 if self.allow_reuse_address:
     self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

나를 위해 일한 간단한 해결책은 터미널을 닫고 다시 시작하는 것입니다.


HTTPServer (( '', 443), myHandler)를 호출하기 전에이 명령으로 하위 프로세스를 실행하는 것 외에는 아무것도 작동하지 않았습니다.

kill -9 $ (lsof -ti tcp : 443)

물론 이것은 리눅스와 같은 OS에만 해당됩니다!


이미 실행중인 동일한 포트에서 서비스를 실행하려고하기 때문입니다.

서비스가 프로세스 스택에서 중지되지 않았기 때문에 언젠가는 발생합니다. 당신은 그들을 죽여야합니다

여기에 아무것도 설치할 필요가 없습니다 . 실행중인 모든 파이썬 프로세스를 죽이는 한 줄 명령입니다.

Linux 기반 OS의 경우 :

세게 때리다:

kill -9 $(ps -A | grep python | awk '{print $1}')

물고기:

kill -9 (ps -A | grep python | awk '{print $1}')

동일한 오류가 발생했습니다. 수행 한
단계 :
1-사용됨 $ ps -fA | grep python
2-모든 프로세스를
종료했습니다. 3-터미널 종료
4-응용 프로그램을 다시 시작하고 실행했습니다 (mkchromecast).
5-이 오류 메시지를받지 못했습니다.

다른 문제가 있습니다. 후속 조치.

참고 URL : https://stackoverflow.com/questions/4465959/python-errno-98-address-already-in-use

반응형