Ich habe zwar ähnliche Thread über die Suche gefunden, allerdings keine Lösung für meinen Code in python 2.7. Folgendes Problem:
Ich habe einen TCP-SocketServer erstellt und eine eigene Klasse in der ich handle() überschreibe. Den Server starte ich mittels server_forever(), der Server soll so lange requests bearbeiten, bis er den String "EOS_LM" in einer Nachricht über das Socket erhält. Dann soll der Server gestoppt werden. Shutdown() funktioniert leider nicht und wenn ich versuche aus handle() einen Wert mittels return zurückzugeben gelingt das auch nicht. Daher 2 Fragen:
1) Wie kann ich den Server beim Eintreffen eines Strings beenden
2) Wie kann ich Werte mittels return aus handle() zurückgeben
Danke schon mal im Voraus, lG dh233
Code: Alles auswählen
#!/usr/bin/python
import SocketServer
import json
class MyTCPHandler(SocketServer.BaseRequestHandler):
"""
The RequestHandler class for our server.
It is instantiated once per connection to the server, and must
override the handle() method to implement communication to the
client.
"""
SocketServer.TCPServer.allow_reuse_address = True
def handle(self):
self.data = self.request.recv(1024).strip()
self.json = json.loads(self.data)
print type(self.json)
for keys,values in self.json.items():
print values
if (values in "EOS_LM"):
return values
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
try:
print "starting server forever"
server.serve_forever()
except KeyboardInterrupt:
server.shutdown()