【问题标题】:What does this socket.gaierror mean?这个 socket.gaierror 是什么意思?
【发布时间】:2013-02-21 04:04:17
【问题描述】:

我是 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

这是什么意思?

【问题讨论】:

    标签: python tcp errno


    【解决方案1】:

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

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

    【讨论】:

    • 这个答案更有用,除了 OP 之外的每个人——也就是那些没有在他们的小型 TCP 回显服务器中写过HOST = ' ' 的人。以我为例 - 我只是想知道这是什么异常。所以感谢您解释gai 代表什么。
    【解决方案2】:

    HOST = ' '
    

    应该阅读

    HOST = ''
    

    (即引号之间没有空格)。

    您收到错误的原因是 ' ' 不是有效的主机名。在这种情况下,'' 有一个特殊的含义(它基本上意味着“所有本地地址”)。

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 2018-10-29
      • 1970-01-01
      • 2017-05-25
      • 2010-10-03
      • 2015-01-09
      • 2011-10-12
      • 2015-06-22
      • 1970-01-01
      相关资源
      最近更新 更多