如何解决通过Python套接字发送许多对象
使用Python套接字发送多个对象的正确方法是什么?
我的服务器从MySQL数据库获取数据,然后将其一一发送到客户端。这是使用Pickle方法完成的:
问题数据
def serializeData(self,ID,first_name,last_name):
# create instance of Person object
person = sd.Person(ID,last_name)
# serialize object to make it possible to send via Socket
data = pickle.dumps(person)
return data
服务器
# query from database
self.sql_cursor.execute("select * from employees")
# send data via Socket
for x in self.sql_cursor:
connection.send(self.serializeData(str(x[0]),x[2],x[3]))
客户端接收字节流,然后使用Pickle将其解码。
客户
def deserializeData(self,received_data):
deserialized_data = pickle.loads(received_data)
return deserialized_data
while True:
self.data += s.recv(1024)
person = self.deserializeData(self.data)
if self.data:
print("ID: " + person.ID)
print("First name: " + person.first_name)
print("Last name: " + person.last_name)
else:
break
它适用于第一个对象,但是在此之后,客户端会抛出一个无法拾取的错误:
ID: 10001
First name: Georgi
Last name: Facello
Traceback (most recent call last):
File "./Client.py",line 54,in <module>
client.connectAndFetchData()
File "./Client.py",line 38,in connectAndFetchData
person = self.deserializeData(data)
File "./Client.py",line 20,in deserializeData
deserialized_data = pickle.loads(received_data)
_pickle.UnpicklingError: invalid load key,'\x00'.
有什么问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。