gpt4 book ai didi

Java DatagramSocket 在初始化时卡住

转载 作者:行者123 更新时间:2023-11-29 09:10:03 30 4
gpt4 key购买 nike

我正在编写一段 UDP 网络程序(客户端 - 服务器),但遇到了一些麻烦。

我想使用流来输入/输出数据,所以我用谷歌搜索“udp inputstream”并找到UDPInputStreamUDPOutputStream .然而,当我尝试使用这些时,程序在尝试初始化 UDPOutputStream 时卡住了。

这是我的代码中卡住的行:

outStream = new UDPOutputStream(InetAddress.getByName("127.0.0.1"), port);
System.out.println("UDP output stream initialized."); // <-- doesn't get called

我检查了 UDPOutputStream 的源代码,代码卡在了这一行:

dsock = new DatagramSocket();

为什么执行到这一行就挂了?在服务器端,我仍然使用我的“旧”非流版本的简单 UDP 代码,并且它可以工作。套接字以相同的方式初始化并且不会挂断。我尝试在初始化中加入一个端口号,但并没有解决问题。

最佳答案

主机有多个网络接口(interface)(例如,环回接口(interface)为 127.0.0.1,网卡为其他地址;可能有多个网卡)。

如果您绑定(bind)到环回地址127.0.0.1,那么您将只能接收本地发送的数据包。如果要接收从远程计算机通过网络发送的数据包,您必须绑定(bind)到本地 IP 地址(例如 192.168.1.100)。

尝试以下操作:

InetAddress addr = InetAddress.InetAddress.getLocalHost();
outStream = new UDPOutputStream(addr, port);

关于Java DatagramSocket 在初始化时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12951925/

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