我正在尝试向我的客户端发送一个字典,它在服务器端是fin,但是当它取消字典时,它会出现错误KeyError: 'Y'
。
为什么?
这是我的代码:
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()
答案 0 :(得分:1)
对于你已经连接的"当然没有帮助。消息正在与客户端中的pickle连接。从服务器代码中删除send
似乎可以使您的程序正常运行。
答案 1 :(得分:0)
您的功能userDump()
应更正为:
def userDump():
d = s.recv(1024)
s.sendall("userdump")
d = s.recv(1024)
return pickle.loads(d)
在您的代码中,您在"You're Connected"
中收到了d
,而您正试图将其解开。
答案 2 :(得分:-1)