【问题标题】:Setting Up Multicast Server Socket in Android在 Android 中设置多播服务器套接字
【发布时间】:2016-03-30 16:08:09
【问题描述】:

我找到了一些在 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),并且我还获得了多播锁。

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

【问题讨论】:

标签: java android multicast multicastsocket


【解决方案1】:

绕了一圈,这个问题和我的一样:

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)
{
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2018-12-19
    相关资源
    最近更新 更多