Sockets 如何通过tcp套接字传输大数据
如何在不拆分的情况下传输大数据。我正在使用tcp套接字。这是一场比赛。我不能使用udp,数组中可能有1200个值。我正在发送json格式的数组。但是接收它的服务器像分裂了一样 还有没有像tcp一样发送http请求的选项?我需要有秩序的回应。而且它应该更快Sockets 如何通过tcp套接字传输大数据,sockets,http,tcp,data-transfer,large-data,Sockets,Http,Tcp,Data Transfer,Large Data,如何在不拆分的情况下传输大数据。我正在使用tcp套接字。这是一场比赛。我不能使用udp,数组中可能有1200个值。我正在发送json格式的数组。但是接收它的服务器像分裂了一样 还有没有像tcp一样发送http请求的选项?我需要有秩序的回应。而且它应该更快 谢谢,您无法控制数据包/数据报的拆分。网络决定了这一点 在IP的情况下,您有DF(不分段)标志,但我怀疑它在这里会有多大帮助。如果通过以太网进行通信,则1200个元素的阵列可能无法装入以太网帧(有效负载大小高达1500个八位字节的MTU)。 为
谢谢,您无法控制数据包/数据报的拆分。网络决定了这一点
在IP的情况下,您有DF(不分段)标志,但我怀疑它在这里会有多大帮助。如果通过以太网进行通信,则1200个元素的阵列可能无法装入以太网帧(有效负载大小高达1500个八位字节的MTU)。
为什么您的应用程序依赖于整个数据必须在单个单元中到达,而不是在单个连接中到达(可能由多个单元组成)?您无法控制分组/数据报的拆分。网络决定了这一点
在IP的情况下,您有DF(不分段)标志,但我怀疑它在这里会有多大帮助。如果通过以太网进行通信,则1200个元素的阵列可能无法装入以太网帧(有效负载大小高达1500个八位字节的MTU)。
为什么您的应用程序依赖于整个数据必须在单个单元中到达,而不是在单个连接中到达(可能由多个单元组成)?您不能
- HTTP可能会将其分块
- TCP将对其进行分段
- IP将对其进行打包
- 路由器会把它分割成碎片
- TCP将在另一端重新组装
- HTTP可能会将其分块
- TCP将对其进行分段
- IP将对其进行打包
- 路由器会把它分割成碎片
- TCP将在另一端重新组装
这里没有需要解决的问题。请考虑问题可能在其他地方,或者您可能发送了太多不必要的数据。在PHP示例中,有
isset()
函数。如果你正在创建一个基于互联网的回合制游戏,你不会(每次都需要来回发送所有1200个变量。只需发送更改的内容,当其他玩家收到该数据时,仅更改设置的变量。考虑问题可能在其他地方,或者您可能发送了太多不必要的数据。在PHP示例中,有isset()
功能。如果你正在创建一个基于互联网的回合游戏,你不需要(每次都需要来回发送所有1200个变量。只需发送更改的内容,当其他玩家收到该数据时,仅更改设置的变量)
如何在不拆分的情况下传输大数据
我将上述解释大致等同于“如何使用尽可能少的TCP数据包在TCP连接上传输数据”。正如其他人所指出的,无法保证您的数据将被放入单个TCP数据包中——但您可以做一些事情使其更有可能。以下是我将做的一些事情: