1

我有一个关于 tcp/ip 套接字网络的问题。基本上它就在那里:我可以利用 tcp/ip 的任何部分来帮助管理多包发送。例如,我想发送一个 100 mb 的二进制文件,它需要 70-80 个 tcp 数据包。与此同时,我在另一边有一个相对较快的轮询接收。我的接收是否必须单独接收每个数据包并将数据包“缝合”在一起,寻找要达到的大小(它可以查看操作码并确定大小)或者有什么方法可以告诉 tcp 说“嘿,我在这里发送 100 mb,完成后让他们知道。”

我正在使用 glib 的低级套接字库(gsocket)。

4

1 回答 1

0

当使用像协议缓冲区这样的二进制编码时,您将通过插入一个标头来包装实际的有效负载,该标头将包含在另一端解码有效负载所需的信息。

假设附加 8 个字节,其中前 4 个字节表示编码消息的类型,后 4 个字节表示整个消息的长度。

然后,在接收端,您将读取此标头,它是有效负载的一部分,以确定消息的类型和长度。这使您可以在一个有效负载中组合多条消息,或跨数据包拆分消息并可靠地重新组合它们。

于 2015-10-13T12:36:28.500 回答