web-dev-qa-db-ja.com

このsocket.gaierrorはどういう意味ですか?

pythonが初めてで、Core Python Applications 3rd Edition。これが最初の例であり、すでに困惑しています。ここに、最後にエラーがあるコードを示します。

#!/usr/bin/env python

from socket import *
from time import ctime

Host = ' '
PORT = 21567
BUFSIZ = 1024
ADDR = (Host, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

    while True:
        print 'waiting for connection...'
        tcpCliSock, addr = tcpSerSock.accept()
        print "...connected from:", addr

        while True:
        data = tcpCliSock.recv(BUFSIZ)
        if not data:
            break
        tcpCliSock.send("[%s] %s" % (ctime(), data))

    tcpCliSock.close()
tcpSerSock.close()

Traceback (most recent call last):
  File "tsTserv.py", line 12, in <module>
    tcpSerSock.bind(ADDR)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 224, in meth
socket.gaierror: [Errno 8] nodename nor servname provided, or not known

これは何を意味するのでしょうか?

40
user2139635

これは、指定されたホスト名_' '_が無効であることを意味します(gaiはgetaddrinfo()を表します)。

NPEがすでに述べているように、空の文字列_''_はスペース_' '_よりも適切かもしれません。

37
glglgl

Host = ' '

読むべき

Host = ''

(つまり、引用符の間にスペースはありません)。

エラーが発生する理由は、' 'は有効なホスト名ではありません。このコンテキストでは、''には特別な意味があります(基本的に「すべてのローカルアドレス」を意味します)。

16
NPE