首先,它在本地工作。仅当我将代码上传到 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/