我正在开发一个需要基本客户端/服务器交互模型的 iPhone 应用程序。为此,我将使用 Bonjour 和 NSNetService,以及 NSNetServiceBrowser 来发现同一网络上的其他人。我遵循了几个不同的指南,它们或多或少具有相同的示例代码。
相关服务器代码
...
serverName = [[UIDevice currentDevice] name];
netService = [[NSNetService alloc] initWithDomain:@"local."
type:@"_myservice._tcp."
name:serverName
port:port];
...
服务发布成功,即我得到 netServiceDidPublish: 回调
相关浏览器代码
...
browser = [[NSNetServiceBrowser alloc] init];
[browser setDelegate:delegate];
[browser searchForServicesOfType:@"_myservice._tcp."
inDomain:@"local."];
...
现在这一切的结果很有趣:
- 在 iPhone 上运行,设备只能看到自己发布的 NSNetService。
- 在两台 iPhone 上运行,两台设备都看不到对方的 NSNetService。
- 在 iPhone Simulator 上运行,它会找到所有的 NSNetServices,包括它自己的。
iPhone模拟器截图
我在这里有点不知所措......模拟器完全按预期工作。但是在设备上却不是,我不能让 2 部不同的 iPhone 在同一个 WiFi 上看到对方,他们只能看到自己。知道这里发生了什么吗?