DatagramSocket 未接收/发送到 JAR 中的服务器

时间:2021-07-22 12:43:27

标签: java android sockets intellij-idea udp

我有一个 Android 服务器,我可以使用 DatagramSocket 从我的 Java 客户端连接到该服务器。当我从 IntelliJ 运行它时它工作得非常好(数据由 Android 服务器发送和接收)。当我从 IntelliJ 构建到 JAR 文件时,有时无法从服务器接收数据包,有时无法向服务器发送任何数据包。我也尝试过禁用防火墙,甚至使用 JLaunch 将 .jar 文件打包成 .exe 并将其添加到防火墙以允许所有传入/传出流量,但到目前为止没有任何效果。它仅在我通过 IntelliJ 或 Eclipse 运行代码时有效。

我通过获取设备的 IP 和服务器绑定到的端口连接到服务器。

InetSocketAddress address = new InetSocketAddress(UserInterface.addressTextArea.getText(), PORT);
try {
     serverSocket = new DatagramSocket(null);
     serverSocket.connect(address);
} catch (SocketException | IllegalArgumentException socketException) {
     socketException.printStackTrace();
}

这是我接收/发送的代码。我发送一个空字节只是为了确认我正在服务器上获取数据包(当我从 IntelliJ 运行时这样做)

serverSocket.send(new DatagramPacket(new byte[0], 0));

// Receive packet from the Android server
byte[] receivedData = new byte[BUFFER_SIZE];
receivedPacket = new DatagramPacket(receivedData, receivedData.length);
serverSocket.receive(receivedPacket);

这是Android服务器上的代码

/* Check if client is connected */
DatagramPacket client = new DatagramPacket(new byte[0], 0);
udpServerSocket.receive(client);

/* Read audioRecorder data and wrap it in a packet for UDP socket to send */
DatagramPacket packet = new DatagramPacket(
new byte[0],
0,
client.getAddress(),
client.getPort());
udpServerSocket.send(packet));

我希望能够只运行 .jar 文件,而不是从 IDE 编译和运行。任何帮助将不胜感激!

0 个答案:

没有答案
相关问题