Ошибка JmDNS - метод getInetAddresses () не определен для типа ServiceInfo - PullRequest
1 голос
/ 16 ноября 2011

Почему-то не нравится метод getInetAddresses() в строках:

Enumeration additions = (Enumeration) ev.getInfo().getInetAddresses();
if (ev.getInfo().getInetAddresses() != null && ev.getInfo().getInetAddresses().length > 0) {
    additions =  ev.getInfo().getInetAddresses()[0].getHostAddress();
}

import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;

import javax.jmdns.JmDNS;
import javax.jmdns.ServiceEvent;
import javax.jmdns.ServiceListener;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import javax.jmdns.ServiceInfo;

private String type = "_workstation._tcp.local.";
private JmDNS jmdns = null;
private ServiceListener listener = null;
private ServiceInfo serviceInfo;
private void setUp() {
    android.net.wifi.WifiManager wifi = (android.net.wifi.WifiManager) getSystemService(android.content.Context.WIFI_SERVICE);
    lock = wifi.createMulticastLock("mylockthereturn");
    lock.setReferenceCounted(true);
    lock.acquire();
    try {
        jmdns = JmDNS.create();
        jmdns.addServiceListener(type, listener = new ServiceListener() {

            @Override
            public void serviceResolved(ServiceEvent ev) {
                Enumeration additions = (Enumeration) ev.getInfo().getInetAddresses();
                if (ev.getInfo().getInetAddresses() != null && ev.getInfo().getInetAddresses().length > 0) {
                    additions =  ev.getInfo().getInetAddresses()[0].getHostAddress();
                }
                notifyUser("Service resolved: " + ev.getInfo().getQualifiedName() + " port:" + ev.getInfo().getPort() + additions);
            }

            @Override
            public void serviceRemoved(ServiceEvent ev) {
                notifyUser("Service removed: " + ev.getName());
            }

            @Override
            public void serviceAdded(ServiceEvent event) {
                // Required to force serviceResolved to be called again (after the first search)
                jmdns.requestServiceInfo(event.getType(), event.getName(), 1);
            }
        });
        serviceInfo = ServiceInfo.create("_test._tcp.local.", "AndroidTest", 0, "plain test service from android");
        jmdns.registerService(serviceInfo);
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }
}

1 Ответ

0 голосов
/ 17 ноября 2011

Попробуйте загрузить и использовать последнюю версию JmDNS из Центральное хранилище Maven , очевидно, есть некоторые проблемы, связанные с файлом JAR, загруженным с их домашней страницы SourceForge. JAR-файл от SourceForge не очень хорошо работает на Android.

Проверьте этот вопрос для более подробной информации. Надеюсь, что это поможет.

...