gpt4 book ai didi

java - DatagramSocket.send() 失败, "BindException: Cannot assign requested address"为 0.0.0.0

转载 作者:行者123 更新时间:2023-11-30 11:54:17 25 4
gpt4 key购买 nike

关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




我正在客户端的 Java 代码库上执行 Maven 构建,其中一个测试套件失败了。日志中报告的错误与我使用 NetBeans 调试器单步调试代码时发现的错误相同。

原生函数 java.net.PlainDatagramSocketImpl.send()正在抛出 BindException - “无法分配请求的地址”。我不能比这更深入地研究代码,因为它是一个原生函数。

在更高级别上,代码正在执行网络的基本测试。

DatagramSocket ds = new DatagramSocket(service.getNetworkConfiguration().getBindSocketAddress().getPort() + 100);
InetSocketAddress bindSocketAddress = service.getNetworkConfiguration().getBindSocketAddress();
ds.send(new DatagramPacket(message, message.length, bindSocketAddress.getAddress(), bindSocketAddress.getPort()));
service返回的IP地址,因此包含在 bindSocketAddress 中如前所述,是 0.0.0.0 - 我尝试了不同的端口(32168、22332、1234),都出现相同的错误。
+ 100出现在 DatagramSocket 的定义中port 显然是故意的,而且这个测试套件已经为其他人成功了很长时间,并且已经到位。

我在 64 位的 Windows 7 上运行。

我已禁用本地计算机上的防火墙和防病毒软件,并且已运行 netstat -a而且我没有在绑定(bind)端口列表中看到我使用过的任何端口。

这可能是我的 Windows 配置甚至我的路由器的问题吗?也许我的Java配置以某种方式?任何建议将不胜感激。

跟进:我在 CentOS 5.5 虚拟机上运行时收到 IDENTICAL 错误。不过,它仍然可能是 Windows 7 配置问题,因为 VM guest 正在 Windows 7 主机上运行 - 共享其 Internet 连接。 (桥接)

跟进#2(见第 4 条评论):让 RECIPIENT 成为 0.0.0.0 似乎无效;实际上,JDK(InetAddress.java)中的一条注释说:未指定的地址(也称为anylocal或通配符地址)不能用作通配符地址为0.0.0.0的IP数据包的目标地址。我将代码更改为使用“localhost”(参见第 4 条评论),它解决了问题。但是,由于我不明白的原因,上面的代码可能是有效的;当我与代码的开发人员澄清时,我会发布跟进或答案。

更新(2012 年 3 月 1 日):事实证明(回想起来)事实上,有问题的代码只是以前程序员部分的错误。我真正的误解与问题的主题完全无关。

解释是:每次构建 Java 代码时,我都会运行系统内置的相关单元测试。那时我没有意识到可以构建源代码,但绕过单元测试。事实证明,团队中的另一位程序员已经构建了代码(成功),但跳过了单元测试(并且没有注意到这个错误);然后将代码提交给源代码控制,认为它是正确的。其他程序员也习惯于在跳过单元测试的同时构建代码。因此,该错误在几个星期内都没有被发现。但是,我确实执行了单元测试,并从源代码管理中收到了这个所谓的工作代码,但它仍然包含错误。我没有向团队中的其他人询问该错误,因为当时我认为充分理解 Java 是我的责任,而不需要花费团队中其他程序员的时间,我认为这是我的误解,因为我认为其他人是在单元测试中没有收到错误。

最佳答案

请看我的“更新”——这个问题没有实际意义。

查看我的长评论以获得更全面的解释。

我将问题留在这里,以防问题末尾的“更新”与问题本身的主题无关,被证明对它有用的人发现。

关于java - DatagramSocket.send() 失败, "BindException: Cannot assign requested address"为 0.0.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780409/

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