ich möchte von einem Rechner auf einen anderen Daten übertragen. Dabei handelt es sich um eine Python-Datenstruktur. Da sowohl Sender als auch Empfänger in Python gechrieben sind, dachte ich mir, dass ich die Daten einfach mit pickle auf dem Sender einpacke und beim Empfänger wieder auspacke. Das funktioniert in der Regel auch wunderbar, manchmal kommte es jedoch zu einem Fehler.
Hier die Seite des Senders:
Code: Alles auswählen
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
pick = pickle.dumps(out)
sock.send(pick)
sock.close()
Code: Alles auswählen
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = ""
while True:
inc = self.request.recv(1024)
if inc == None or inc == "":
break
data = data + inc
unpickled = pickle.loads(data)
add_order_to_queque(unpickled)
Normalerweise funktioniert das alles wie erwartet, machmal kommt es aber zu folgendem Fehler:
Code: Alles auswählen
Exception happened during processing of request from ('10.1.0.13', 49217)
Traceback (most recent call last):
File "C:\Python26\lib\SocketServer.py", line 560, in process_request_thread
self.finish_request(request, client_address)
File "C:\Python26\lib\SocketServer.py", line 322, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Python26\lib\SocketServer.py", line 617, in __init__
self.handle()
File "C:\remoteinterface\orderinterface.py", line 31, in handle
inc = self.request.recv(1024)
error: [Errno 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Mache ich hier bei der Annahme und Verarbeitung der Daten etwas falsch?
Gruß
Sparrow