web-dev-qa-db-fra.com

Que signifie ce socket.gaierror?

Je suis nouveau à python et en parcourant un livre, Core Python Applications 3rd Edition. Ceci est le premier exemple et déjà je suis perplexe avec lui) Voici le code avec l'erreur à la fin.

#!/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 ça veut dire?

40
user2139635

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

Comme NPE l'indique déjà, une chaîne vide '' Serait peut-être plus appropriée qu'un espace ' '.

37
glglgl

Le

Host = ' '

devrais 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 (cela signifie essentiellement "toutes les adresses locales").

16
NPE