NsdManager找不到http服务器

时间:2014-08-16 11:56:48

标签: android

我在本地网络上运行一个简单的http服务器,并尝试使用Android设备上的NsdManager来发现它。我已关注Android training guide on this matter,但我的设备未找到任何服务。

这是我的Android代码:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void setupNetworkDiscovery()
{
    discoveryListener = new NsdManager.DiscoveryListener()
    {

        @Override
        public void onStopDiscoveryFailed(String serviceType, int errorCode)
        {
            // TODO Auto-generated method stub
        }

        @Override
        public void onStartDiscoveryFailed(String serviceType, int errorCode)
        {
            Log.d(getPackageName(), "Start failed");

        }

        @Override
        public void onServiceLost(NsdServiceInfo serviceInfo)
        {
            // TODO Auto-generated method stub

        }

        @Override
        public void onServiceFound(NsdServiceInfo serviceInfo)
        {
            Log.d(getPackageName(), "Found a service");

            // display the service info
            StringBuilder sb = new StringBuilder();
            sb.append(serviceInfo.toString());
            sb.append(" - name: ");
            sb.append(serviceInfo.getServiceName());
            sb.append("; type: ");
            sb.append(serviceInfo.getServiceType());
            sb.append("\n");
            servicesLabel.append(sb.toString());
        }

        @Override
        public void onDiscoveryStopped(String serviceType)
        {
            // TODO Auto-generated method stub

        }

        @Override
        public void onDiscoveryStarted(String serviceType)
        {
            Log.d(getPackageName(), "Start succeeded");
        }
    };

    nsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE);
    nsdManager.discoverServices("_http._tcp", NsdManager.PROTOCOL_DNS_SD, discoveryListener);
}

我得到的唯一日志消息是"开始成功"来自 onDiscoveryStarted

服务器当然正在运行,因为我可以使用浏览器连接到它。 nmap还确认端口已打开:

Nmap scan report for 192.168.1.104
Host is up (0.00011s latency).
PORT     STATE SERVICE
8080/tcp open  http-proxy

我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我不认为这是您的主要问题,但服务类型应为“_http._tcp”。 (你最后错过了点) 对我来说(API 21),你的代码工作正常,发现“_http._tcp”仍然返回“_http._tcp”的服务。