Socket.Gaierror を修正: [Errno 8] ノード名もサーブ名も指定されていないか、Python で不明
-
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
を Python で再作成する -
Python で
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
を修正
Python の socket
モジュールは、Berkeley ソケット API へのインターフェイスを提供します。 ソケットは、ネットワーク上の 2つのノードを接続して相互に通信できるようにします。
socket
モジュールを使用しているときに、Python で socket error
が発生することがあります。 このチュートリアルでは、Python でそのエラーを解決する方法を説明します。
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
を Python で再作成する
ここでは、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 nor servname provided, or not known
を修正
この出力は、コードが 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 で socket error
を修正する方法がわかりました。 このチュートリアルがお役に立てば幸いです。
関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません