Java 的 DatagramSocket 不接收数据包(仅在生产中)

标签 java udp

首先,它在本地工作。仅当我将代码上传到 Heroku 时才会出现此问题。我可以在我的日志中看到服务器工作正常,只是没有通过 UDP 接收套接字数据。 创建套接字:

DatagramSocket socket;
try {
    socket = new DatagramSocket(port);
} catch (Exception e) {
    logger.error(e.toString());
}

监听数据包:

try {
    byte[] data = new byte[256];
    DatagramPacket receivePacket = new DatagramPacket(data, data.length);
    socket.receive(receivePacket);
    logger.log("Got packet!"); // This is never reached
} catch (IOException e) {
    logger.log(e.toString());
}

我尝试通过运行 netstat 连接到服务器(通过 mac):nc -u garbil.herokuapp.com 40791,但它根本不起作用。

服务器日志可以在http://garbil.herokuapp.com/logs中查看.

最佳答案

嗯,我想这是一个防火墙问题:)

您需要检查您是否正确配置了“PORT”变量: https://devcenter.heroku.com/articles/dynos#web-dynos

然后您可能还必须检查提供商是否允许您使用 UDP...

关于Java 的 DatagramSocket 不接收数据包(仅在生产中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37077360/

相关文章:

java - 使用 apache compress/org.tukaani.xz 在 java 中解压/解密受密码保护 (AES 256) 7z 文件的问题

java - 使用 JFileChooser 将文件类型附加到 Java 中的文件

java - 帕斯卡三角 - 不需要的输出

java - 地址长度非法

java - 当主应用程序 JFrame 最小化时最小化辅助 JFrame

Java UDP 连接

c# - Windows 10 中 UDP 的问题。UWP

c - 在不使用广播的情况下一次从 UDP 服务器向所有客户端发送相同的信息

java - Android序列化-java反序列化

c++ - Linux 上 UDP 的延迟测量