从ios连接()到同一子网中的ios设备

时间:2012-02-06 10:34:51

标签: iphone ios macos arp

我开发了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通信。

1 个答案:

答案 0 :(得分:1)

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

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