Oldukça basit bir sorun olacağını düşündüğüm şey var.Bir servisi tekrar kaydetme JMDNS
JmDNS'i başarıyla uyguladığım bir hizmeti yayınlamaya çalışıyorum, ancak uygulama duraklatıldığında, bir hizmetin kaydını kaldırmak ve daha sonra uygulamayı sürdürmek için hizmeti yeniden kaydettirmek istiyorum.
Ancak bunu yaparken sorunlara koşuyorum. kod aşağıda: Yanlış ya da alternatif bir yaklaşım ne yapıyorum
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)
birisi bana açıklayabilir:
//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");
}
bu çalıştığımda bana kafa karıştırıcı bu hata günlüğü olsun. Hizmet oluşturmaya uyguladığım dizeler, başvuruda daha önce bir hizmeti kaydettirmek için kullanıldığı için kesinlikle geçerlidir.
Olay türünü/Hizmet türünü "_http._tcp.local" olarak kullanırsanız, tüm hizmetleri düzgün şekilde alabiliyor musunuz? – sandeepmaaram