通过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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...