gpt4 book ai didi

iOS NSInputStream

转载 作者:行者123 更新时间:2023-11-29 04:12:11 24 4
gpt4 key购买 nike

我在使用 NSInputStream 时遇到问题。我有连接到服务器的客户端应用程序,然后服务器将开始通过 TCP 每秒大约 1 条消息重复向我的客户端应用程序发送消息。服务器只是向客户端广播消息,消息是 xml 格式。服务器将消息作为一个数据包发送。

现在的问题是,当我从 NSInputStream 读取字节时,数据被截断,这意味着我不是收到 1 个完整的消息,而是不时收到 2 个单独的数据(部分 xml)响应。我无法调试,因为当我从 NSInputStream 读取数据字节时它已经发生了。

我使用 Wireshark 来分析我收到的每个数据包,当发生这种情况时,数据也会被截断,因为 TCP 会将部分数据重新传输到我的客户端。我尝试记录每个部分数据字节,部分数据的总和始终在 1600 字节左右。

我不知道他们是如何设计和实现服务器端的,但我知道有很多人连接到该服务器并不断从中获取广播消息。

有人遇到这个问题吗?有人可以帮忙吗?数据是否可能超过最大大小并被分割?

最佳答案

这本身不是问题。它是 TCP 设计的一部分,也是 NSInputStream 设计的一部分。您可能会收到部分消息。您的工作就是处理这个事实,等待收到完整的消息,然后处理完整的消​​息。

1600 字节有点奇怪。我期望 1500 字节,因为这是最大的合法以太网数据包(或者特别是 1472 左右的某个地方,这是一个非常常见的 MTU,减去一些 header )。或者,由于 NSInputStream 中的缓冲,我可能期望 1k 或 4k 的倍数。但这些都不重要。您必须面对这样一个事实:您不一定会在其边界处收到消息。

关于iOS NSInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14249139/

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