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
これは何を意味するのでしょうか?
これは、指定されたホスト名_' '
_が無効であることを意味します(gaiはgetaddrinfo()
を表します)。
NPEがすでに述べているように、空の文字列_''
_はスペース_' '
_よりも適切かもしれません。
の
Host = ' '
読むべき
Host = ''
(つまり、引用符の間にスペースはありません)。
エラーが発生する理由は、' '
は有効なホスト名ではありません。このコンテキストでは、''
には特別な意味があります(基本的に「すべてのローカルアドレス」を意味します)。