3

有谁知道 CFSocket API 如何从套接字读取字节到数据回调中?起初我认为它会做一些“幕后”工作,以始终以与发送数据相同的长度返回数据,但经过一些测试后,我发现如果我快速发送大量数据,数据会以块的形式返回,所以我需要使用标头自己解析数据包。

到目前为止,在测试中我还没有收到任何部分数据(即,如果我发送了 1000 个字节,我总是在数据回调中得到 1000 个字节,但绝不会更少)但我想如果缓冲区真的满了,这可能会发生,我将不得不重建数据包如果它们不完整。

我是否基本上需要对 CFSocket 使用与 BSD 套接字相同的数据包读取策略,即在每个数据包前面加上一个包含长度的标头,将流解析为数据包长度,如果数据包在回调时不完整,则重新组合数据再次被调用。

谢谢!

4

0 回答 0