我的代码是:
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)
第一次运行时效果很好,但每次都给我Errno 9。我做错了什么?
顺便说一句,
mcip = "mau5ville.com"
port = 25565
magic = "\xFE"
答案 0 :(得分:48)
您正在关闭的同一个套接字上调用connect
。你不能这样做。
至于close
的{{3}}说:
套接字对象的所有未来操作都将失败。
只需将s = socket.socket()
(或您拥有的任何内容)移动到循环中即可。 (或者,如果您愿意,可以使用the docs而不是分两步执行此操作,这使得更难以出错,并且意味着您不必猜测IPv4与IPv6等。)< / p>
答案 1 :(得分:1)
我过去解决了这个问题,
你必须在连接之前做到这一点:
s = socket(AF_INET, SOCK_STREAM)
而不是继续:
s.connect((mcip, port))
s.send(magic)
data = s.recv(1024)
s.close()
print dat