首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法注册NSD服务

无法注册NSD服务
EN

Stack Overflow用户
提问于 2015-09-14 20:07:07
回答 1查看 834关注 0票数 3

我正试图与NSD合作,我发现自己被困在一开始.

我用一个大按钮设置了一个非常基本的布局。这个按钮的目的是在我的设备上启动和注册一个服务,以便其他设备能够通过局域网连接到它。在我唯一的活动中,只要按下上述按钮,就会调用折页方法:

代码语言:javascript
复制
public void startService(View view){
    initSocket();
    initRegList();
    regService();
}

在DevBytes:网络服务发现视频之后,我实现了上面调用的方法,如下所示(请原谅我的YOLO-ing进行调试):

代码语言:javascript
复制
public void initSocket(){

try {
 mSocket = new ServerSocket(0);
} catch (IOException e) {
 e.printStackTrace();
}
 mPort = mSocket.getLocalPort();
 Log.e("YOLO-PORT", String.valueOf(mPort));
}

public void regService(){

    NsdServiceInfo serviceInfo = new NsdServiceInfo();
    serviceInfo.setServiceName("MyCoolService");
    serviceInfo.setServiceType("_myapp.tcp.");
    serviceInfo.setPort(mPort);
    mNsdman = (NsdManager) this.getSystemService(this.NSD_SERVICE);
    mNsdman.registerService(serviceInfo,NsdManager.PROTOCOL_DNS_SD,mReglist);
}

public void initRegList() {

    mReglist = new NsdManager.RegistrationListener() {
        @Override
        public void onRegistrationFailed(NsdServiceInfo nsdServiceInfo, int i) {
            Log.e("YOLO-FAIL", "REG_FAIL, errcode = " + String.valueOf(i));
        }

        @Override
        public void onUnregistrationFailed(NsdServiceInfo nsdServiceInfo, int i) {
            Log.e("YOLO-FAIL", "UNREG_FAIL, errcode = " + String.valueOf(i));
        }

        @Override
        public void onServiceRegistered(NsdServiceInfo nsdServiceInfo) {
            mServName = nsdServiceInfo.getServiceName();
            Log.e("YOLO-NAME", mServName);
        }

        @Override
        public void onServiceUnregistered(NsdServiceInfo nsdServiceInfo) {
            Log.e("YOLO-OK", "UNREG");
        }
    };

}

我的问题是,我一直使用返回代码= 0的侦听器的onUnregistrationFailed方法。

在下面,当我按下上述按钮时,您会发现Logcat条目正在运行:

代码语言:javascript
复制
09-14 21:54:03.904  18672-18672/fr.lpnsk.lollibox E/YOLO-PORT﹕ 48321
09-14 21:54:04.124      180-531/? E/MDnsDS﹕ service register request 22 got an error from DNSServiceRegister -65540
09-14 21:54:04.125      538-607/? E/NsdService﹕ Failed to execute registerService com.android.server.NativeDaemonConnector$NativeDaemonArgumentException: command '76 mdnssd register 22 MyCoolService _myapp.tcp. 48321' failed with '501 76 serviceRegister request got an error from DNSServiceRegister'
09-14 21:54:04.126      180-531/? E/MDnsDS﹕ register stop used unknown requestId 22
09-14 21:54:04.126      538-607/? E/NsdService﹕ Failed to execute unregisterService com.android.server.NativeDaemonConnector$NativeDaemonArgumentException: command '77 mdnssd stop-register 22' failed with '501 77 Unknown requestId'
09-14 21:54:04.127  18672-19953/fr.lpnsk.lollibox E/YOLO-FAIL﹕ REG_FAIL, errcode = 0

我是不是漏掉了什么明显的东西?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 16:35:44

我是不是漏掉了什么明显的东西?

是。在设置服务类型时,您忽略了在_之前的下划线tcp符号。它应该是:

代码语言:javascript
复制
serviceInfo.setServiceType("_myapp._tcp.");

来自正式文件

...the服务类型指定应用程序使用的协议和传输层。语法是"_protocol._transportlayer“。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32573038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档