gpt4 book ai didi

python - 通过 TCP/UDP 发送一个大数据包和许多小数据包?

转载 作者:可可西里 更新时间:2023-11-01 02:54:42 25 4
gpt4 key购买 nike

我在互联网上通过 TCP 将点坐标发送到可视化客户端脚本。我想知道我应该使用哪个选项:

  1. 将坐标连接成一个大字符串并将它们一起发送,或者
  2. 一个一个发过去

我不知道哪个更快。我还有其他一些问题:

  1. 我应该使用哪一个?
  2. TCP 的数据包是否有最大尺寸? (python:client.send(string)string 的最大大小)
  3. 因为这是一个可视化项目,我应该使用 UDP 而不是 TCP 吗?
  4. 你能告诉我一些关于丢包的事吗?它们什么时候发生?如何应对?

抱歉提出了很多问题,但我真的很纠结这个问题......

最佳答案

当您发送一个字符串时,它可能会在多个 TCP 数据包中发送。如果您发送多个字符串,它们可能全部在一个 TCP 数据包中发送。您不会接触到数据包,TCP 套接字只是一个恒定的数据流。不要期望对 recv() 的每次调用都与对 send() 的单个调用配对,因为那不是真的。您可能会发送 "abcd""efg",并且可能会读入 "a""bcde" , 和来自 recv()"fg"

最好在收到数据后立即发送,以便网络堆栈尽快获得有关您发送的内容的尽可能多的信息。它将确切地决定要做什么。你可以发送任意大的字符串,如有必要,它会被分解以通过网络发送。全部自动。

因为在 TCP 中你不处理数据包,所以像丢失数据包这样的事情也不是你关心的。这一切都是自动处理的——要么数据最终通过,要么连接关闭。

至于 UDP - 你可能不想要 UDP。 :)

关于python - 通过 TCP/UDP 发送一个大数据包和许多小数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com