What does this socket.gaierror mean?

PythonTcpErrno

Python Problem Overview


I'm new to python and going through a book, Core Python Applications 3rd Edition. This is the the first example and already I'm stumped with it. Here's the code with the error at the end.

#!/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

What does this mean?

Python Solutions


Solution 1 - Python

It means that your given host name ' ' is invalid (gai stands for getaddrinfo()).

As NPE already states, maybe an empty string '' would be more appropriate than a space ' '.

Solution 2 - Python

The

HOST = ' '

should read

HOST = ''

(i.e. no space between the quotes).

The reason you're getting the error is that ' ' is not a valid hostname. In this context, '' has a special meaning (it basically means "all local addresses").

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2139635View Question on Stackoverflow
Solution 1 - PythonglglglView Answer on Stackoverflow
Solution 2 - PythonNPEView Answer on Stackoverflow