我有一些测试客户端每次都遇到相同的问题。客户端可以连接,并且可以发送第一条消息,但之后服务器停止响应该客户端。我怀疑这个问题与 s.accept() 有关,但我不确定到底出了什么问题或如何解决它。
def startServer():
host = ''
port = 13572
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
print "Close the command prompt to stop Gamelink"
while 1:
try:
client, address = s.accept()
data = client.recv(size)
if data:
processData(data)
client.send("OK")
else:
print "Disconnecting from client at client's request"
client.close()
except socket.error, (value, message):
if s:
print "Disconnecting from client, socket issue"
s.close()
print "Error opening socket: " + message
break
except:
print "Gamelink encountered a problem"
break
print "End of loop"
client.close()
s.close()
该服务器旨在通过本地网络访问,并且它需要重量轻且响应速度非常快,因此如果其他实现(例如基于线程)会更好地满足这些要求,请告诉我。预期的应用程序将用作远程游戏键盘,因此需要低资源使用和高速。