gpt4 book ai didi

java - JDK 1.7 DatagramSocket 未正确绑定(bind) IP 和端口

转载 作者:行者123 更新时间:2023-12-02 06:18:43 24 4
gpt4 key购买 nike

我正在用Java编写一个使用UDP的服务器程序。当然,我使用 DatagramSocket 作为服务器 UDP 套接字。我使用的是 Mac OS X 10.9.1,编码环境设置为 JDK 1.7。

我的问题是,当我像这样初始化套接字时:

serverSocket = new DatagramSocket(19132);

它不会抛出异常,但是当我尝试将其记录到控制台时,如下所示:

log("Starting Minecraft PE server on " + serverSocket.getInetAddress() + ":" + serverSocket.getPort());

.getInetAddress 为 null,端口为 -1。我尝试绑定(bind)的端口是19132。当我尝试代码时我的防火墙被关闭,它仍然是空的。以下是日志的一些输出:

2014-01-18 17:16:20 [MCPE_Server][INFO] Starting Minecraft PE server on null:-1

最佳答案

您正在调用返回“连接”另一端的方法。数据报套接字从来不会像 TCP 连接那样真正连接,但“连接”它会修复数据报的目的地。这是可选的。

您正在寻找套接字绑定(bind)的地址;为此,您需要方法 getLocalPortgetLocalAddress。不过,getLocalAddress 仍然不会返回 IP 号码;如果您通过仅接受端口号的构造函数创建 DatagramSocket,它将监听“地址”0.0.0.0 指示的所有接口(interface)。

如果你运行这段代码:

DatagramSocket serverSocket = new DatagramSocket(19132);
System.out.println("Starting Minecraft PE server on " + serverSocket.getLocalAddress() + ":" + serverSocket.getLocalPort());

您将得到如下输出:

Starting Minecraft PE server on 0.0.0.0/0.0.0.0:19132

关于java - JDK 1.7 DatagramSocket 未正确绑定(bind) IP 和端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21212066/

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