小编use*_*985的帖子

Android NSD没有发现所有服务

我正在尝试使用Android Native Service Discovery运行应用程序,但有时当我运行应用程序时,它不会从我的网络中发现所有服务.我使用四个galaxy nexus 运行来自https://github.com/joeluchoa/nsd的代码,并且大多数时候他们每个人同时发现不同数量的服务.

基本上我使用ServerSocket运行服务:

ServerSocket server = new ServerSocket(0);
Log.i(TAG, "IP " + server.getInetAddress()
        + ", running on port " + server.getLocalPort());

Intent intent = new Intent(MySocket.this,
        MyPresence.class);
intent.putExtra("PORT", server.getLocalPort());
startService(intent);
Run Code Online (Sandbox Code Playgroud)

然后我使用NsdManager中的registerService方法发布它:

NsdServiceInfo serviceInfo = new NsdServiceInfo();

serviceInfo.setServiceName(Build.SERIAL + "-" + new Date().getTime());
serviceInfo.setServiceType(SERVICE_TYPE);
serviceInfo.setPort(port);

mNsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD,
        mRegistrationListener);
Run Code Online (Sandbox Code Playgroud)

要发现服务,我使用NsdManager中的方法discoverServices:

mNsdManager.discoverServices(SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD,
        mDiscoveryListener);
Run Code Online (Sandbox Code Playgroud)

使用mDiscoveryListener如下:

mDiscoveryListener = new NsdManager.DiscoveryListener() {

    @Override
    public void onDiscoveryStarted(String regType) {
        Log.d(TAG, "Service discovery started");
    }

    @Override
    public void onServiceFound(NsdServiceInfo service) { …
Run Code Online (Sandbox Code Playgroud)

android zeroconf service-discovery wifi-direct

29
推荐指数
2
解决办法
5812
查看次数