2
我在爲Android應用程序使用JmDNS庫時遇到問題。在Android上,通過網絡ON和OFF反覆調用JmDNS
由於Bonjour不會定期發送保持活動消息,因此我每隔30秒關閉並打開一個新的JmDNS實例,以便可以調用serviceAdded和serviceResolved函數。
但是在這些實例創建之間,如果我關閉並在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