매번 같은 문제가 발생하는 몇 가지 테스트 클라이언트가 있습니다. 클라이언트는 연결할 수 있고 첫 번째 메시지를 보낼 수는 있지만 그 후에 서버는 해당 클라이언트에 응답하지 않습니다. 이 문제는 s.accept()와 관련이 있다고 의심하지만 정확히 무엇이 잘못되었거나 해결할 방법이 확실하지 않습니다.Python 서버 관련 문제
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()
는 서버가 로컬 네트워크를 통해 액세스 할 수 있도록 구성하고, 제발 그것은 가벼운 무게와 반응이 매우 빠르게 할 필요가 있으므로 다른 구현 경우 (예 : 스레드 기반)는 이러한 요구 사항을 충족 더 좋을 것입니다 저에게 알려주세요. 의도 된 응용 프로그램은 원격 게임 키보드로 사용되므로 낮은 리소스 사용과 고속이 필요합니다.
'accept'를 루프 외부에 두어야합니다. 또한이 서버는 하나의 연결 만 허용합니다. 실제 서버가 여러 클라이언트를 지원하려면'select' 나'poll' 같은 연결을 다중화해야합니다. – Keith
하나의 연결은 실제로 내가하려고하는 것에 완벽합니다. 문제가 해결 된 것처럼 보입니다. 감사! –