Android:使用TCP的客户端服务器,以及在局域网(WiFi)上发现PC/Mac

Android:使用TCP的客户端服务器,以及在局域网(WiFi)上发现PC/Mac,android,sockets,networking,arp,Android,Sockets,Networking,Arp,我想在客户端-服务器模型中创建应用程序。所以我编写了桌面服务器和移动客户端库。现在我遇到了一些问题,从Android设备自动发现局域网中的PC/Mac计算机 可能的解决办法: 获取android设备ip地址,获取子网掩码,使用org.apache.commons.net.util.SubnetUtilsclass到getInfo().getAllAddresses()并使用InetAddress.isRechable(timout=1000ms)扫描它们此解决方案有效,但如果我们有乐观子网掩码2

我想在客户端-服务器模型中创建应用程序。所以我编写了桌面服务器和移动客户端库。现在我遇到了一些问题,从Android设备自动发现局域网中的PC/Mac计算机

可能的解决办法:


  • 获取android设备ip地址,获取子网掩码,使用
    org.apache.commons.net.util.SubnetUtils
    class到
    getInfo().getAllAddresses()
    并使用
    InetAddress.isRechable(timout=1000ms)扫描它们
    此解决方案有效,但如果我们有乐观子网掩码255.255.255.0,它必须扫描254个地址,需要254秒=>>4分钟。好的,我可以使用线程,也许添加10个线程并拆分此任务以检查大约26个ip地址可以使其低于我认为使用
    NSD
    (网络服务发现)实现
    DNS-SD
    (服务发现)和在MacOS(也是Windows、iOS)上
    Bonjour

    http://developer.apple.com/bonjour
    
    将是在LAN中实现设备发现(由客户机服务器本地网络软件提供的服务)的最佳方式。您还可以获取描述性名称,如在该计算机上运行的计算机或服务器应用程序的名称,以显示最终用户。macOS上的终端中有dns sd命令行工具,您可以测试网络中服务的注册及其后续发现。它工作得很好,速度也很快。在macOS命令行工具中注册的我的Android应用程序发现服务的示例屏幕截图

    观看更多: