毎回同じ問題が発生しているテストクライアントがいくつかあります。クライアントは接続でき、最初のメッセージを送信できますが、その後、サーバーはそのクライアントへの応答を停止します。問題は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()
サーバーはローカルネットワーク経由でアクセスすることを目的としており、軽量で応答が非常に速い必要があるため、これらの要件を満たすために別の実装(スレッドベースなど)の方が適している場合はお知らせください。目的のアプリケーションはリモートゲーミングキーボードとして使用されるため、リソースの使用量を減らして高速にする必要があります。