【问题标题】:MulticastSocket Android related with Internet?MulticastSocket Android 与互联网有关吗?
【发布时间】:2016-03-03 12:19:58
【问题描述】:

我将一个网络接口 (eth) 添加到多播组以进行网络广播,因为我需要创建 jMDNS 对象。以太网接口是TCPIP 用于蓝牙。我面临一个问题,在服务发布中加入多播组后,需要激活 Internet/Wifi 才能创建 jMDNS 对象。在 jmdns 的客户端服务发现中,不需要创建 Multicast 或加入 Multicast Group。

所以如果在创建多播套接字并加入组后发布服务,当我创建 jmdns 对象时(不打开 Internet/Wifi) 我遇到了异常

java.net.SocketException:setsockopt 失败:ENODEV(没有这样的设备)

如果我在 jmdns 上打开 Internet/Wifi 并且一切正常。

所以我的问题是,当我明确使用网络接口进行蓝牙-Pan 网络共享时,为什么需要打开 Internet/Wifi?

有什么办法可以解决这个问题吗?还是 BT-Tethering 总是需要互联网连接?

我在 Android 框架中使用 java 作为编程语言。

【问题讨论】:

  • “我正在使用 Android 作为编程语言。” - 我认为它的 Java... ;)
  • 抱歉错了......使用java反射......我正在使用java进行网络共享和连接

标签: android bluetooth jmdns multicastsocket


【解决方案1】:

我在尝试在创建热点的设备上实例化 jmdns 时遇到了类似的问题。看起来您的设备必须连接到 wifi 才能实例化 jmdns(因此不是热点的主机)。

【讨论】:

  • 但这实际上不应该发生...您找到解决方案了吗?
  • 我认为这是因为当您在 android 上停用 wifi 时,它们不再有可用的 wlan 接口,而在计算机上它们仍然可用;因此 jmdns 适用于计算机上禁用的 wifi,但不适用于 android。这是我从测试中得出的结论,我希望我错了,但这看起来确实是一个设计问题。
  • 不,我认为这不正确,我认为这与Multicast Socket有关。实际上在制作客户端-服务器通信系统时,在我的服务器中我使用Multicast Socket加入了组然后创建 jmdns 来注册服务,但在我的客户端中,我创建了 jmdns 对象没有任何问题(没有打开 wifi 和数据),我认为 jmdns 不应该只依赖于 wlan。我也可以提供其他网络接口(如 bt-pan)。如果您选择了正确的网络接口,那么应该没有问题。
猜你喜欢
  • 2012-01-22
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 2021-10-26
  • 1970-01-01
相关资源
最近更新 更多