首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新注册服务JMDNS

重新注册服务JMDNS
EN

Stack Overflow用户
提问于 2013-07-29 17:53:40
回答 1查看 913关注 0票数 6

我有一个我认为是相当简单的问题。

我正在尝试使用JmDNS广播一个我已经成功完成的服务,但是当应用程序暂停时,我想注销一个服务,然后在恢复应用程序时重新注册该服务。

然而,我在做这件事时遇到了问题。代码如下:

代码语言:javascript
复制
//I use jmdns.create again before these lines which I don't know if i should?

mServiceInfo = ServiceInfo.create(registeredServiceName, registeredServiceType, registeredServicePort,"Hello");

try {       

     jmdnsNetworkDiscoveryManager.registerService(mServiceInfo);
    } 
catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.i(TAG, "Service Registration Error");
     }

当我尝试这样做时,我得到了这个错误日志,这让我感到困惑:

代码语言:javascript
复制
07-29 10:38:13.099: W/DNSStateTask(28769): java.lang.StringIndexOutOfBoundsException: length=37; regionStart=0; regionLength=-1
07-29 10:38:13.099: W/DNSStateTask(28769):  at java.lang.String.startEndAndLength(String.java:593)

07-29 10:38:13.099: W/DNSStateTask(28769):  at java.lang.String.substring(String.java:1474)

07-29 10:38:13.099: W/DNSStateTask(28769):  at javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:292)

07-29 10:38:13.099: W/DNSStateTask(28769):  at javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)

07-29 10:38:13.099: W/DNSStateTask(28769):  at javax.jmdns.impl.DNSQuestion.<init>(DNSQuestion.java:220)

07-29 10:38:13.099: W/DNSStateTask(28769):  at javax.jmdns.impl.DNSQuestion$AllRecords.<init>(DNSQuestion.java:184)

07-29 10:38:13.099: W/DNSStateTask(28769):  at javax.jmdns.impl.DNSQuestion.newQuestion(DNSQuestion.java:245)

07-29 10:38:13.099: W/DNSStateTask(28769):  at javax.jmdns.impl.tasks.state.Prober.buildOutgoingForInfo(Prober.java:131)

07-29 10:38:13.099: W/DNSStateTask(28769):  at javax.jmdns.impl.tasks.state.DNSStateTask.run(DNSStateTask.java:125)

07-29 10:38:13.099: W/DNSStateTask(28769):  at java.util.Timer$TimerImpl.run(Timer.java:284)

07-29 10:38:13.104: W/JmDNSImpl(28769): RECOVERING
07-29 10:38:13.119: W/DNSStateTask(28769): Canceler(192-168-2-2.local.).run() exception 
07-29 10:38:13.119: W/DNSStateTask(28769): java.lang.StringIndexOutOfBoundsException: length=37; regionStart=0; regionLength=-1

07-29 10:38:13.119: W/DNSStateTask(28769):  at java.lang.String.startEndAndLength(String.java:593)

07-29 10:38:13.119: W/DNSStateTask(28769):  at java.lang.String.substring(String.java:1474)

07-29 10:38:13.119: W/DNSStateTask(28769):  at javax.jmdns.impl.ServiceInfoImpl.decodeQualifiedNameMapForType(ServiceInfoImpl.java:292)

07-29 10:38:13.119: W/DNSStateTask(28769):  at javax.jmdns.impl.DNSEntry.<init>(DNSEntry.java:47)

07-29 10:38:13.119: W/DNSStateTask(28769):  at javax.jmdns.impl.DNSRecord.<init>(DNSRecord.java:46)

07-29 10:38:13.119: W/DNSStateTask(28769):  at javax.jmdns.impl.DNSRecord$Service.<init>(DNSRecord.java:647)

07-29 10:38:13.119: W/DNSStateTask(28769):  at javax.jmdns.impl.ServiceInfoImpl.answers(ServiceInfoImpl.java:1195)

07-29 10:38:13.119: W/DNSStateTask(28769):  at javax.jmdns.impl.tasks.state.Canceler.buildOutgoingForInfo(Canceler.java:117)

07-29 10:38:13.119: W/DNSStateTask(28769):  at javax.jmdns.impl.tasks.state.DNSStateTask.run(DNSStateTask.java:125)

07-29 10:38:13.119: W/DNSStateTask(28769):  at java.util.Timer$TimerImpl.run(Timer.java:284)

有人能给我解释一下我做错了什么吗?或者是另一种方法。我应用于服务创建的字符串绝对是有效的,因为它们用于在应用程序的早期注册服务。

EN

回答 1

Stack Overflow用户

发布于 2014-07-11 12:07:41

我也有同样的问题。事实证明,当您的事件类型无效时,ServiceInfo.create()并不能很好地告诉您。在我的例子中,我发送的是“_http._tcp”。作为事件类型。我将我的事件类型更改为"_http._tcp.local“,一切都运行得很好。希望这能有所帮助。

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

https://stackoverflow.com/questions/17920932

复制
相关文章

相似问题

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