在使用 AsyncSocket 作为客户端时扫描网络以查找服务器

Posted

技术标签:

【中文标题】在使用 AsyncSocket 作为客户端时扫描网络以查找服务器【英文标题】:scan the network for a server while using AsyncSocket as a client 【发布时间】:2015-12-18 07:48:17 【问题描述】:

我的应用程序使用 AsyncSocket 作为客户端与外部服务器通信。 (工作代码可以找到here) 应用启动时,用户输入服务器计算机的 IP 地址。

假设 ios 和服务器位于同一个子网

问题:有没有办法“扫描”网络中的服务器,从而避免用户手动输入服务器 IP?

我可以在循环中一个一个地迭代 IP (10.0.1.x 10.0.1.x++) 但这似乎是错误和浪费的。

还有其他更优雅的方法吗?

【问题讨论】:

【参考方案1】:

我有一个 iOS 项目在当前 (Wi-Fi) 网络中进行服务器发现。典型的解决方案是使用 UDP 广播请求服务器信息,然后监听 UDP 响应。一旦您收到带有服务器地址的响应,您就可以使用 TCP 套接字建立连接。

CocoaAsyncSocket 已经足够了。我使用了GCDAsyncUdpSocketGCDAsyncSocket

我了解您可能需要有关该主题的更多信息。有时间我会尝试扩展答案。

【讨论】:

拜托,我仍然没有一个好的网络发现解决方案。

以上是关于在使用 AsyncSocket 作为客户端时扫描网络以查找服务器的主要内容,如果未能解决你的问题,请参考以下文章

asyncsocket ipad没有连接到服务器[关闭]

GCDAsyncSocket - 不接收数据 - AsyncSocket 工作正常

ios asyncsocket 无法调用 readdata 方法

ios 9 中的 Asyncsocket 错误 - 在连接或接受连接时尝试连接。先断开

为啥使用 dispatch_async() 方法时 AsyncSocket 无法连接到主机?

AsyncSocket 连接仅适用于家庭网络