根据这些评论,我对最有可能的问题有一个猜测,但至少有50%的可能性我猜错了,在这种情况下……告诉我,我会删除答案。在

我猜你是在尝试使用流套接字,就好像它是一个消息序列一样。这是网络编程新手中非常常见的问题。在

想象一下发送者会这样做:data = pickle.dumps(object);

self.sock.sendall(data)

接受者会这样做:

^{pr2}$

在简单的测试中,这可能在99%的时间内有效,但在实际应用中却行不通。您将收到部分消息,或在一次呼叫中收到多条消息,或上述内容的一些有趣组合(如消息2的一半、消息3的全部和消息4的三分之一)。在

因此,您将向loads传递一条部分消息,并返回一个错误,告诉您它不是一个完整的pickle。在

这并不是因为任何东西都坏了,这才是所谓的工作原理。(TCP)套接字是一个流:一个字节序列,而不是一个消息序列。任何你想在上面建立的结构,你都必须在数据中构建。在

这意味着您必须设计和实现一个协议,以某种方式知道每个消息何时结束。最简单的协议可能是行(显然只有在消息不能有未经转义的换行符时才有用)和netstrings,但是任何能让您清楚地看到某些数据并说“这是消息0,这是消息1,等等”的任何东西都可以工作。在

通常,这意味着将接收到的数据附加到某个缓冲区中,并循环该缓冲区中的消息。例如,使用线条,而不是:while True:

line = sock.recv(4096)

do_stuff(line)

…你需要这个:rdbuf = ''

while True:

rdbuf += sock.recv(4096)

lines = rdbuf.split('\n')

rdbuf = lines[-1]

for line in lines[:-1]:

dostuff(line)

如果你仔细想想,这和文件没什么不同。想象一下这个代码:with open('foo.data', 'wb') as f:

f.write('123')

f.write('45')

with open('foo.data', 'rb') as f:

while True:

number = f.read()

这将读到'12345',而不是{}。如果你想得到'123',你需要一些方法知道只读取3个字节。插入一个长度前缀,或添加空格作为分隔符,或只是外部知道第一个数字总是3位数长…任何都可以,但您必须做一些的事情。在

python中eof表示什么语句错误_python中pickle的EOF错误相关推荐

  1. python怎么查看代码错误_python中的错误如何查看

    python常见的错误有 1.NameError变量名错误 2.IndentationError代码缩进错误 3.AttributeError对象属性错误 4.TypeError类型错误 5.IOEr ...

  2. python复制出现错误_Python中的错误和异常

    前言 错误是程序中的问题,由于这些问题而导致程序停止执行.另一方面,当某些内部事件发生时,会引发异常,从而改变程序的正常流程. python中会发生两种类型的错误. 语法错误 逻辑错误(异常) 语法错 ...

  3. python的for语句条件_Python中的条件选择和循环语句

    Python中的条件选择和循环语句 同C语言.Java一样,Python中也存在条件选择和循环语句,其风格和C语言.java的很类似,但是在写法和用法上还是有一些区别.今天就让我们一起来了解一下. 一 ...

  4. python中选择结构通过什么语句实现_Python中选择结构通过什么语句实现

    Python中选择结构通过什么语句实现 Python中的选择结构语句是 if elif else. Python用缩进代替了Java/C/C++/C#中常用的大括号{}来区分代码块,另外Python在 ...

  5. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  6. python异常处理时所使用的保留字_Python中,下列哪个保留字不用于异常处理______________。_学小易找答案...

    [单选题]维持细胞生存所必需的最基本的基因是 ( ) [单选题]从体细胞克隆高等哺乳动物的成功说明了 ( ) [单选题]细胞决定与细胞分化的关系是 ( ) [多选题]一种类型的分化细胞转变成另-种类型 ...

  7. python中的pass是什么意思_Python中pass的作用与使用教程

    Python中pass的作用与使用教程 Python中pass的作用 空语句 do nothing 保证格式完整 保证语义完整 以if语句为例,在c或c++/java中: if(true) ; //d ...

  8. python 不安全的包或方法_Python中的10个常见安全漏洞及修复方法

    写安全的代码很困难,当你学习一门编程语言.一个模块或框架时,你会学习其使用方法.在考虑安全性时,你需要考虑如何避免代码被滥用,Python也不例外,即使在标准库中,也存在着许多糟糕的实例.然而,许多 ...

  9. xjar加密后运行错误_Python中的错误和异常

    前言 错误是程序中的问题,由于这些问题而导致程序停止执行.另一方面,当某些内部事件发生时,会引发异常,从而改变程序的正常流程. python中会发生两种类型的错误. 语法错误 逻辑错误(异常) 语法错 ...

  10. python中if else用法详解_Python 中的 else详解

    我们都知道 Python 中else的基本用法是在条件控制语句中的 if...elif...else...,但是 else 还有两个其它的用途,一是用于循环的结尾,另一个是用在错误处理的 try 中. ...

最新文章

  1. 我哭了,工业界AI项目落地有多难?
  2. 3-4 第三天 Generator生成器
  3. linux 64位内存划分,linux 64位内存空间大小?(linux 64 bits memory space size? [closed])
  4. 大数据分析机器学习(一)之线性模型-年龄和心率关系
  5. DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
  6. Ansible and FileBeta
  7. 实体首部字段-四大首部字段之一
  8. dede新增字段调用方法
  9. 小程序毕设作品之微信酒店预订小程序毕业设计(1)开发概要
  10. MTK camera tuning学习中遇到的一些问题(调试前)
  11. RS485协议和Modbus协议有什么区别?工业网关能用吗?
  12. 国内ERP技术公司综合
  13. 计算机通信技术【计算机网络】学习
  14. 电商系统商品库的基本功能设计与实现
  15. javascript版的等额本息计算器
  16. 欧阳娜娜从阿里跳槽网易:阿里P8堪称教科书级别的面试现场!最后一个问题亮了...
  17. Term40:若一个类是函数子(functor),则应使它可配接(adaptable)
  18. 深度剖析MyBatis 的执行流程(3)--映射器
  19. 鲲鹏鸿蒙概念股,华为鲲鹏概念新龙头股一览 华为鲲鹏概念股有哪些
  20. JS设置请在微信客户端打开链接提示页面

热门文章

  1. 升级遗留代码的最佳实践
  2. 读懂这本书,才算读懂阿里大数据
  3. Knative Service 是如何指定端口和协议的
  4. Mars 如何分布式地执行
  5. Jupyter Notebook数据科学高效技巧
  6. F5:2022年应用交付和安全领域趋势展望
  7. WAIC|高精准、低成本,九章云极DataCanvas突破AutoML难题
  8. 让安全威胁无所遁形,全方位掌握攻击“前世今生”的黑科技来了
  9. 对不起,我把APP也给爬了
  10. 看完这篇操作系统,和面试官扯皮就没问题了!