PY3; socketserver:Erneutes Verbindun zum Server schlägt fehl
Verfasst: Sonntag 30. Dezember 2012, 17:39
Hallo zusammen,
war vor Ewigkeiten schonmal hier, mein Raspberry Pi hat mich nun dieser Sprache wieder in die Hände gespielt und mir bereits ein gesundes Maß an Verwirrung bereitet.
Mein Problem: Ich habe eine Android-App (selfmade), die über einen Port befehle an meinen Pi schicken soll, wo diese dann umgesetzt werden. Mein Problem: Disconnecte ich einmal von diesem Server, komm ich nicht mehr "drauf", bzw. der Server reagiert nicht mehr.
Ich bekomme weder "Working", noch "finished", noch "I'm done" "thats it" as well as I don't get ANY code on reconnect.
Wenn ich den eingehenden Text nicht auf Inhalt prüfe, bekomme ich nach disconnect zichtausendfach einen leerstring und Eric ist für 2 Minuten unerreichbar.
Kann mir mal jemand erklären, wo ich nach dem Disconnecten im Quelltext stehe und wie ich wieder zurück in die Handle-Funktion komme, wenn ich mich wieder verbinde?
Wie findet man solche Probleme in Python.
Eine Info zum Schluss:
Ich bin noch nicht aufm Pi unterwegs, sondern entwickle noch in meiner Suse12.1-Umgebung. Mein Vergleichsserver (in 20 Minuten in PureBasic inkl. Gui runtergetippert) funktioniert einwandfrei. Es liegt also definitiv am PythonServer!
Gruß
PureFranky
war vor Ewigkeiten schonmal hier, mein Raspberry Pi hat mich nun dieser Sprache wieder in die Hände gespielt und mir bereits ein gesundes Maß an Verwirrung bereitet.
Mein Problem: Ich habe eine Android-App (selfmade), die über einen Port befehle an meinen Pi schicken soll, wo diese dann umgesetzt werden. Mein Problem: Disconnecte ich einmal von diesem Server, komm ich nicht mehr "drauf", bzw. der Server reagiert nicht mehr.
Code: Alles auswählen
import socketserver
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.
"""
def handle(self):
# self.request is the TCP socket connected to the client
while True:
self.data = self.request.recv(1024).strip()
if (self.data!=b""):
print (self.data)
FuncTree=bytes.decode(self.data).split('.')
print(FuncTree[0])
# just send back the same data, but upper-cased
#self.request.sendall(self.data.upper())
print("That's it")
def finish(self):
print("I'm done")
#Now the main Program
if __name__ == "__main__":
HOST, PORT = "", 4711
# Create the server, binding to localhost on port 9999
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
while True:
server.handle_request()
print("Working")
print ("finished")
Wenn ich den eingehenden Text nicht auf Inhalt prüfe, bekomme ich nach disconnect zichtausendfach einen leerstring und Eric ist für 2 Minuten unerreichbar.
Kann mir mal jemand erklären, wo ich nach dem Disconnecten im Quelltext stehe und wie ich wieder zurück in die Handle-Funktion komme, wenn ich mich wieder verbinde?
Wie findet man solche Probleme in Python.
Eine Info zum Schluss:
Ich bin noch nicht aufm Pi unterwegs, sondern entwickle noch in meiner Suse12.1-Umgebung. Mein Vergleichsserver (in 20 Minuten in PureBasic inkl. Gui runtergetippert) funktioniert einwandfrei. Es liegt also definitiv am PythonServer!
Gruß
PureFranky