Qu'est-ce socket.gaierror veut dire?

je suis nouveau en python et je passe en revue un livre, Core Python Applications 3rd Edition. C'est le premier exemple, et déjà je suis perplexe. Voici le code avec l'erreur à la fin. #1 / 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

Qu'est-ce que cela signifie?

35
demandé sur user2139635 2013-03-06 15:26:01

2 réponses

Cela signifie que votre nom d'hôte donné ' ' est invalide (gai signifie getaddrinfo()).

comme le dit déjà NPE, peut-être une chaîne vide '' serait plus approprié qu'un espace ' '.

32
répondu glglgl 2015-05-29 09:12:31

HOST = ' '

devrait lire

HOST = ''

(c'est à dire pas d'espace entre les guillemets).

La raison pour laquelle vous obtenez l'erreur est que ' ' n'est pas un nom d'hôte valide. Dans ce contexte, '' a une signification particulière (il signifie "toutes les adresses locales").

14
répondu NPE 2013-03-06 11:27:51