Getting Errno 9: Bad file descriptor in python socket
I resolved this problem in the past,
you have to create the socket before connect()
:
s = socket(AF_INET, SOCK_STREAM)
then continue with:
s.connect((mcip, port))
s.send(magic)
data = s.recv(1024)
s.close()
print dat
You're calling connect
on the same socket you closed. You can't do that.
As for the docs for close
say:
All future operations on the socket object will fail.
Just move the s = socket.socket()
(or whatever you have) into the loop. (Or, if you prefer, use create_connection
instead of doing it in two steps, which makes this harder to get wrong, as well as meaning you don't have to guess at IPv4 vs. IPv6, etc.)