Ich versuche, ein Wörterbuch zu meinem Client zu senden, und es ist fin auf dem Server-Ende, aber wenn es das Wörterbuch unpickling bekommt, kommt es mit Fehler KeyError: 'Y'
.Pickle Key Fehler "Y" mit Socket
Warum?
Hier ist mein Code:
client.py:
import socket, pickle
s = socket.socket()
s.connect(("localhost", 10000))
def userDump():
s.sendall("userdump")
d = s.recv(1024)
return pickle.loads(d)
print userDump()
s.close()
server.py:
import pickle, socket
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
address = 'localhost'
port = 10000
s.bind((address, port))
s.listen(5)
while True:
c, clientaddress = s.accept()
c.send("You're Connected")
d = c.recv(1024)
if d == "userdump":
u = {"hello":"hi", "hi":"hello"}
print u
c.send(pickle.dumps(u))
c.close()
Wenn die Antwort nicht offensichtlich ist, wird das "Y" am Anfang der Nachricht von der Funktion "pickle.loads" in einem Dictionary von Pickle-Feldtypen nachgeschlagen, und es gibt kein "type" Y '" Feld. – holdenweb