Python 这个socket.gai错误是什么意思?

Python 这个socket.gai错误是什么意思?,python,tcp,errno,Python,Tcp,Errno,我是python新手,正在阅读一本书《核心python应用程序第三版》。这是第一个例子,我已经被它难住了。这是最后有错误的代码 #!/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(A

我是python新手,正在阅读一本书《核心python应用程序第三版》。这是第一个例子,我已经被它难住了。这是最后有错误的代码

#!/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
#/usr/bin/env python
从套接字导入*
不时地
主机=“”
端口=21567
BUFSIZ=1024
地址=(主机,端口)
tcpSerSock=套接字(AF\u INET,SOCK\u STREAM)
tcpSerSock.bind(地址)
听一听(5)
尽管如此:
打印“正在等待连接…”
tcpCliSock,addr=tcpSerSock.accept()
打印“…连接自:”,地址
尽管如此:
数据=tcpCliSock.recv(BUFSIZ)
如果没有数据:
打破
发送(“[%s]%s”%(ctime(),数据))
tcpCliSock.close()
tcpSerSock.close()
回溯(最近一次呼叫最后一次):
文件“tsTserv.py”,第12行,在
tcpSerSock.bind(地址)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py”,第224行,meth格式
socket.gaierror:[Errno 8]提供了节点名或服务名,或者未知
这是什么意思?

HOST = ' '
应该读

HOST = ''
(即引号之间没有空格)


出现错误的原因是
'
不是有效的主机名。在此上下文中,
'
有一个特殊的含义(它基本上是指“所有本地地址”)。

这意味着您给定的主机名
'
无效(gai代表
getaddrinfo()


正如NPE已经指出的那样,可能空字符串
'
比空格
'

更合适。这个答案对每个人都更有用,除了OP——也就是那些没有在小型TCP echo服务器中编写
HOST='
的人。比如我,我只是想知道这是什么样的例外。因此,感谢您解释了gai的含义。