i want to execute the following simple server code:
import socket
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 22331 # Reserve a port
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print('Got connection from', addr)
c.send('Thank you for connecting')
c.close()
gives the following error while executing:
OSError: [Errno 99] Cannot assign requested address
why the OS cannot bind the specified port with the address?
If it works using the ip address but not using hostname.
You should have something like this in your /etc/hosts
mapping ip to hostname.
127.0.0.1 localhost
127.0.1.1 your_hostname_here
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Your /etc/hostname
should obviously be the same as above.
Reboot and you should be able to ping your hostname successfully.
You can also use socket.gethostbyname(socket.gethostname())
to get the i.p as opposed to the hostname