跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请问一个 Python Socket 的问题
未分類
5 2 月 2021

请问一个 Python Socket 的问题

请问一个 Python Socket 的问题

資深大佬 : deplives 7

和服务端采用 socket 链接,本地创建一个线程通过 while True: socket.recv(1024) 来接受数据,但是有一次发现,某个数据接受不到,服务端说他确定发了,我也确定我都收了,然后抓了下包发现服务端两次 send 中间只隔了 0.004ms 貌似是因为这个原因导致第二帧数据无法通过 recv() 接收到,请问下这种情况下我该怎么处理

我这个 recv 的线程只有一件事儿,recv 收到数据,然后 push 到一个消费队列,我实际测了一下,我仅仅 recv 就差不多要 4ms 这个到底该怎么玩

大佬有話說 (11)

  • 資深大佬 : Pagliacii

    感觉可以把数据存到一个 Buffer 里,满了再做处理

  • 資深大佬 : ysc3839

    你用的是 TCP 吗? TCP 是流式传输的,没有“帧”的概念。

  • 資深大佬 : opengps

    找找是不是被拆包过程中抛弃了。抛弃逻辑其实挺多的,不符合协议结构的,粘包的等等

  • 資深大佬 : shyrock

    发送和接收的代码贴一下。肯定不是发送太快的问题,你这样说多个客户端并发连接就没法搞了。

  • 資深大佬 : unixeno

    粘包警察警告

  • 資深大佬 : tomemi

    TCP 粘包

  • 資深大佬 : Jirajine

    tcp 不是你这样用的。
    你应该写个类,把 tcp 连接包装进去,然后实现一个 read 方法。
    内部每次调用 read 时从 tcp 流读数据,读够正好一个对象然后反序列化后返回这个对象。
    在外层可以循环调用 read,每次获得一个对象再进行其他处理。
    至于其他的优化套个 bufferedreader 之类的就没什么好说的了。

  • 主 資深大佬 : deplives

    @unixeno 把日志重新捞了一遍,确实是粘包了,问题已经解决 感谢

  • 資深大佬 : nightwitch

    tcp 没有帧的概念

  • 資深大佬 : todd7zhang

    约定发 [length][body], 定死 length 占用几个字节就好了!世上哪有粘包,拆包

  • 資深大佬 : Leigg

    小伙子不要钓鱼。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具