Socket.Gaierror 수정: [Errno 8] Nodename Nor Servname 제공 또는 Python에서 알 수 없음

Rohan Timalsina 2024년2월15일
  1. Python에서 socket.gaierror: [Errno 8] 노드 이름 또는 servname이 제공되었거나 알 수 없음을 다시 만듭니다.
  2. Python에서 socket.gaierror: [Errno 8] nodename 또는 servname이 제공되었거나 알 수 없음 수정
Socket.Gaierror 수정: [Errno 8] Nodename Nor Servname 제공 또는 Python에서 알 수 없음

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 파일에서 hostlocalhost 또는 127.0.0.1로 지정하여 이 문제를 해결할 수 있습니다.

import socket

s = socket.socket()
host = "localhost"
port = 1234

s.connect((host, port))
print(s.recv(1024))
s.close

출력:

소켓 오류 수정 - 연결 성공

이제 우리는 Python에서 소켓 오류를 수정하는 방법을 알고 있습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - Python Error