Android 앱에 JmDNS 라이브러리를 사용하는 데 문제가 있습니다.Android에서 JmDNS가 네트워크 ON 및 OFF로 반복적으로 호출됩니다.
Bonjour는 주기적으로 keep-alive 메시지를 보내지 않으므로 serviceAdded 및 serviceResolved 함수를 호출 할 수 있도록 30 초마다 새 JmDNS 인스턴스를 닫고 엽니 다.
그러나 이러한 인스턴스 생성 사이에서, Wifi를 켰다가 끄면 JmDNS 인스턴스 생성이 성공하지만 serviceAdded 및 serviceResolved 함수가 호출되지 않습니다.
내 주요 의문은 다음과 같습니다
1)가 또 다시 이러한 인스턴스를 다시 만들고, 따라서 일종의-의 폴링에 영향을 확인 있습니까? 아니면 더 좋은 방법이 있습니까?
2) 네트워크가 꺼져있는 경우 JmDNS 인스턴스를 만들 때마다해야 할 일이 있습니까? 비슷한 문제가있을 수 있습니다 사람들을위한
private void _startJmDnsService() throws IOException {
if (mJmdns != null) {
if (mJmDnsServiceListener != null) {
mJmdns.removeServiceListener(mBonjourServiceType, mJmDnsServiceListener);
mJmDnsServiceListener = null;
}
mJmdns.close();
mJmdns = null;
}
Log.d(TAG, "starting JmDNS");
mJmdns = JmDNS.create(getInet4Address());
mJmDnsServiceListener = new ServiceListener() {
public void serviceResolved(ServiceEvent ev) {
ServiceInfo serviceInfo = ev.getInfo();
Log.w(TAG, "serviceResolved for device " + serviceInfo.getName());
}
public void serviceRemoved(ServiceEvent ev) {
ServiceInfo serviceInfo = ev.getInfo();
Log.w(TAG, "serviceRemoved for device " + serviceInfo.getName());
CDevice.removeDevice(deviceId);
}
public void serviceAdded(ServiceEvent event) {
// Required to force serviceResolved to be called again
// (after the first search)
ServiceInfo serviceInfo = event.getInfo();
Log.w(TAG, "serviceAdded for device " + serviceInfo.getName());
mJmdns.requestServiceInfo(event.getType(), event.getName(), 1);
}
};
mJmdns.addServiceListener(mBonjourServiceType, mJmDnsServiceListener);
Log.w(TAG, "mJmdns Service Listener added!");
}
안녕하세요 rajath, 저는 Android + jmdns에서도 작업하고 있습니다. 나는 문제가 붙어있다. 도와 줄 수 있어요? –
@ KanakSony, StackOverflow에 질문을 게시하고 코멘트에 링크를 제공하는 것이 좋습니다. 가능한 경우 도와 드리겠습니다. 그렇지 않은 경우 대답을 제공 할 수있는 다른 사람들이있을 수 있습니다. – rajath