iphone - Connect() 从 ios 到同一子网中的 ios 设备

标签 iphone ios macos arp

我开发 IOS 应用程序,它需要建立从一部 iPhone(或 iPod)到另一部 iPhone(或 iPod)的标准 TCP 连接。模拟器和设备上的应用程序之间以及两个模拟器之间的连接工作良好。

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

当调用 connect() 应用程序 block 时,超时后返回错误。 局域网内通过wifi通讯

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

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

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

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

最佳答案

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

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

关于iphone - Connect() 从 ios 到同一子网中的 ios 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9158798/

相关文章:

ios - 哪个 Sprite Kit 节点定义了 shouldRasterize 属性?

iPhone 按钮不是矩形的?

ios 7 自定义呈现和关闭过渡

objective-c - iOS block 对象不复制?

mysql - mysql 连接 ID 是否总是递增,即使较低的连接已终止?

iphone - 在 'Library Mode' 中创建 iOS 模块是什么意思?

ios - 如何在不阻止用户交互的情况下执行 tableView.reloadData()

ios - 无法以编程方式导航到另一个 UIViewController iOS

ios - 框架包格式不明确

mysql - MAMP mysql 在一个用户帐户中启动,但不在另一个用户帐户中启动