Подтвердить что ты не робот

Что означает этот сокет.

Я новичок в 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

Что это значит?

4b9b3361

Ответ 1

Это означает, что ваше имя хоста ' ' недействительно (gai означает getaddrinfo()).

Как уже упоминалось в NPE, возможно, пустая строка '' была бы более подходящей, чем пробел ' '.

Ответ 2

HOST = ' '

должен читать

HOST = ''

(т.е. пробела между кавычками).

Причина, по которой вы получаете ошибку, заключается в том, что ' ' не является допустимым именем хоста. В этом контексте '' имеет особое значение (в основном это означает "все локальные адреса" ).