ios同步套接字选项

时间:2014-10-23 02:45:22

标签: ios sockets tcp

我正在使用ios应用程序连接到使用TCP的服务器并将接收到的字节显示在屏幕上。 我在网上使用NSStream(异步)跟踪了很多例子,我连接并得到一些字节。 问题是异步套接字可能将多个TCP数据包合并为一个事件触发器(标准行为)。服务器的回复字节长度是多种多样的,异步套接字似乎无法正确地切断数据包。

我想知道同步套接字是否会解决这个问题,这就是问题所在:

  1. 如上所述,会同步套接字合并数据包吗?
  2. 除了POSIX(许多文章告诉我不要使用POSIX),IOS上的另一个同步套接字选项是什么?
  3. 我可以遵循的任何示例代码?

2 个答案:

答案 0 :(得分:0)

使用同步调用并不能真正解决您的问题。本质上,TCP会话只是一个字节流。底层网络堆栈和设备不需要维护传输分组。即使你使用同步/阻塞调用,你仍然可能会从读取请求返回到代码中的多个“传输”。

您需要编写代码,以便它可以检测流中包含的离散消息。这通常使用包含消息长度的标头或简单的终止字符(例如回车)来完成

答案 1 :(得分:0)

最后,我在C中使用POSIX套接字解决了这个问题。谢谢。