0

我找到了一些在 Android 中设置多播套接字服务器(接收)的示例,我正在尝试将其添加到我的项目中。我的构造函数代码如下所示:

try
{
    this.socket = new MulticastSocket (PORT);
    socket.joinGroup (InetAddress.getByName (MULTICAST_ADDRESS));
}
catch (Exception ex)
{
    Log.e (TAG, "Start up error: " + ex.getMessage());
    ex.printStackTrace();

    this.running = false;
}

但是,由于我不明白的原因,每次执行 joinGroup() 行时都会引发异常。奇怪的是, printStackTrace() 行没有给我任何东西,但 Log.e() 业务给了我以下信息:

Multicast Server: Start up error: setsockopt failed: ENODEV (No such device)  

我已经为我的代码添加了必要的权限(CHANGE_WIFI_MULTICAST_STATE、ACCESS_WIFI_STATE 和 INTERNET),并且我还获得了多播锁。

对这里缺少的内容有什么建议吗?

4

1 回答 1

0

通过一个迂回的路径,这个问题变得和我的一样:

http://stackoverflow.com/questions/8180275/multicast-no-such-device

答案是我需要指定接口,因为我喜欢的松下 Android 平板电脑不止一个:

try
{
    NetworkInterface eth0 = null;
    Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();

    while (enumeration.hasMoreElements())
    {
        eth0 = enumeration.nextElement();

        if ("eth0".equalsIgnoreCase (eth0.getName()))
        {
            break;
        }
    }

    this.socket = new MulticastSocket (PORT);
    socket.setSoTimeout (60000);
    socket.joinGroup (new InetSocketAddress (MULTICAST_ADDRESS, PORT), eth0);
}
catch (Exception ex)
{
    ...
于 2016-03-30T20:58:28.540 回答