1

我开发 IOS 应用程序,它需要从一台 iPhone(或 iPod)到另一台 iPhone(或 iPod)进行标准 TCP 连接。模拟器和设备上的应用程序之间以及两个模拟器之间的连接效果很好。

应用程序使用 posix connect() 并且我必须坚持这种方法,因为其他模块是纯 C 的。

调用 connect() 应用程序块时,超时后返回错误。通信是通过局域网中的wifi进行的

我已经嗅探了流量并遇到了,在连接到模拟器后,设备发送 ARP 并在应答后,标准 TCP 握手进行并建立会话。

iPhone<>iPhone 在 ARP 请求后停止相同的情况,因为另一台 iPhone 没有响应它。此外,iOS 仅发送无偿 ARP(宣布它是 mac ip 对)。我的 MAC 似乎正在处理这个请求,因为它的 ARP 表有 iPhone 记录,它不适用于另一台 iPhone。

我试过 bonjour 服务,但它也只适用于模拟器 <> 设备。

我的问题:有没有办法允许这样的交流?有没有可能只是我的 iPhone 有问题?是否有任何明确的方法来告诉操作系统为 arps 发送响应,或者它是否以某种方式阻止了流量 ios<>ios 通信。

4

1 回答 1

1

不确定这是否会有所帮助,但我正在做一个与在网络上宣布自己的设备类似的项目。我们正在使用 SSDP 从一个设备发送一个活动请求,而其他设备正在侦听多播地址和端口。一旦每个设备接收到活动状态,它就会发送一个包含所有相关信息的响应,包括 IP 地址和端口。不幸的是,SSDP 是一种发送后忘记类型的协议,因此存在一些问题。我们使用 IP 地址和端口信息将消息直接发送到每个设备。

同样,不确定这是否对您的情况有所帮助,但到目前为止我已经看到这项工作非常好。

于 2012-04-20T17:57:48.913 回答