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
'programing' 카테고리의 다른 글
Eclipse에서 AVD 대신 Android 휴대폰으로 내 앱을로드하는 방법 (0) | 2020.10.12 |
---|---|
URL Rails 경로에 해시 매개 변수 추가 (0) | 2020.10.12 |
Queryable.SelectMany () 메서드에 대한 C # LINQ 구문이 있습니까? (0) | 2020.10.12 |
'const'한정자로 정적 멤버 함수를 만들 수없는 이유 (0) | 2020.10.12 |
파이썬에서 두 개의 정렬 된 목록을 어떻게 비교할 수 있습니까? (0) | 2020.10.12 |