54

私は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

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

4

2 に答える 2

51

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

NPE がすでに述べているように、空白文字列よりも空の文字列の''方が適している可能性があります' '

于 2013-03-06T11:33:01.067 に答える
19

HOST = ' '

読むべき

HOST = ''

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

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

于 2013-03-06T11:27:51.170 に答える