Reputation: 673
My code is this:
while 1:
# Determine whether the server is up or down
try:
s.connect((mcip, port))
s.send(magic)
data = s.recv(1024)
s.close()
print data
except Exception, e:
print e
sleep(60)
It works fine on the first run, but gives me Errno 9 every time after. What am I doing wrong?
BTW,
mcip = "mau5ville.com"
port = 25565
magic = "\xFE"
Upvotes: 46
Views: 144314
Reputation: 61
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
Upvotes: 6
Reputation: 365707
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.)
Upvotes: 73