gpt4 book ai didi

java - SLP Java 函数由于 IP_MULTICAST_IF 而导致 SocketException

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:00 24 4
gpt4 key购买 nike

我正在尝试使用 Java 查找名为 test 的 SLP 服务,该服务正在我的网络上运行并创建到它的连接。我知道该服务正在运行,可以使用命令“slptool findsrvs service:test”找到它。此命令返回“service:test://192.168.1.4:12345,65535”。但是下面的代码:

import java.util.Locale;
import ch.ethz.iks.slp.*;

public class OpenConnection {

public static void main(String[] args) throws ServiceLocationException {
Locator locator = ServiceLocationManager.getLocator(new Locale("en"));

ServiceLocationEnumeration sle = locator.findServices(new ServiceType("service:test"), null, null);

System.out.println("Looking up ...");
System.out.println(sle.nextElement());
while (sle.hasMoreElements()) {
ServiceURL foundService = (ServiceURL) sle.nextElement();
System.out.println(foundService);
}
System.out.println("Finished.");
}
}

产生以下输出:

java.net.SocketException: bad argument for IP_MULTICAST_IF: address not bound to any interface
at java.net.PlainDatagramSocketImpl.socketSetOption(Native Method)
at java.net.AbstractPlainDatagramSocketImpl.setOption(AbstractPlainDatagramSocketImpl.java:299)
at java.net.MulticastSocket.setInterface(MulticastSocket.java:448)
at ch.ethz.iks.slp.impl.SLPCore.<clinit>(SLPCore.java:279)
at OpenConnection.main(OpenConnection.java:7)

Looking up ...
null
Finished.

我假设由于在第 7 行中查找定位器失败而为 print sle.nextElement() 语句打印了 null:

Locator locator = ServiceLocationManager.getLocator(new Locale("en"));

所以我的问题是有人知道为什么 IP_MULTICAST_IF 的错误参数会导致这个问题以及如何解决这个问题吗?如果有人发现可能导致 IP_MULTICAST_IF 以外的问题,请随时指出。

请注意,了解我在 Ubuntu 11.04 上使用 JavaSE-1.6、jslp-0.7.1 和 commons-loggin-1.1.1 库是否有帮助。

最佳答案

我刚遇到同样的问题。对我来说修复它的是做一个

System.setProperty("java.net.preferIPv4Stack", "true")

在启动时,也可以通过将以下参数添加到 java cmd 行来完成。

-Djava.net.preferIPv4Stack=true 

关于java - SLP Java 函数由于 IP_MULTICAST_IF 而导致 SocketException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com