繁体   English   中英

iOS NSInputStream

[英]IOS NSInputStream

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM