在 Android 中设置多播服务器套接字
Setting Up Multicast Server Socket in Android
我在 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),并且我还获得了多播锁。
对这里遗漏的内容有什么建议吗?
兜兜转转,这道题和我的一样了:
答案是我需要指定接口,因为我喜欢的松下 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)
{
...
我在 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),并且我还获得了多播锁。
对这里遗漏的内容有什么建议吗?
兜兜转转,这道题和我的一样了:
答案是我需要指定接口,因为我喜欢的松下 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)
{
...