Socket.Gaierror 수정: [Errno 8] Nodename Nor Servname 제공 또는 Python에서 알 수 없음
-
Python에서
socket.gaierror: [Errno 8] 노드 이름 또는 servname이 제공되었거나 알 수 없음
을 다시 만듭니다. -
Python에서
socket.gaierror: [Errno 8] nodename 또는 servname이 제공되었거나 알 수 없음
수정
Python의 socket
모듈은 Berkeley 소켓 API에 대한 인터페이스를 제공합니다. 소켓은 서로 통신할 수 있도록 네트워크의 두 노드를 연결하는 데 도움이 됩니다.
때때로 socket
모듈로 작업할 때 Python에서 socket error
가 발생할 수 있습니다. 이 튜토리얼은 Python에서 해당 오류를 해결하는 방법을 알려줍니다.
Python에서 socket.gaierror: [Errno 8] 노드 이름 또는 servname이 제공되었거나 알 수 없음
을 다시 만듭니다.
여기에서는 socket.gaierror
를 다시 만들고 Python에서 해결하는 방법을 설명합니다.
다음 스크립트는 클라이언트가 지정된 포트에 연결하기를 기다리는 서버입니다.
import socket
s = socket.socket()
host = "localhost"
port = 1234
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
print("Connection received from", addr)
c.send("Thank you for connecting")
c.close()
socket.socket()
함수는 소켓 객체를 생성하고 socket.bind()
는 소켓을 지정된 주소에 바인딩합니다.
socket.accept()
는 클라이언트가 연결될 때 연결을 수락합니다. 연결에 성공하면 출력을 반환하고 연결을 닫습니다.
아래는 지정된 호스트에 연결하는 클라이언트입니다.
import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.connect((host, port))
print(s.recv(1024))
s.close
이제 백그라운드에서 server.py
를 실행하고 다음으로 client.py
를 실행합니다.
python server.py &
python client.py
출력:
Python에서 socket.gaierror: [Errno 8] nodename 또는 servname이 제공되었거나 알 수 없음
수정
출력은 코드가 s.connect((host, port))
인 라인 7에서 오류가 발생했음을 보여줍니다. 이는 socket.gethostname()
이 Python 인터프리터가 현재 실행 중인 시스템의 호스트 이름을 반환하기 때문입니다.
그러나 호스트 이름 대신 호스트 IP 주소를 지정해야 합니다. client.py
파일에서 host
를 localhost
또는 127.0.0.1
로 지정하여 이 문제를 해결할 수 있습니다.
import socket
s = socket.socket()
host = "localhost"
port = 1234
s.connect((host, port))
print(s.recv(1024))
s.close
출력:
이제 우리는 Python에서 소켓 오류
를 수정하는 방법을 알고 있습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.
관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.