java - Java DatagramSocket 不接收数据
问题描述
我正在用java编写一个简单的客户端/服务器,我遇到了这个我无法解决的问题。我在客户端和服务器上都使用 DatagramSocket,而我的服务器无法接收任何数据。我没有收到任何错误,但它不起作用。
这是我的服务器源代码:
public class GameServer {
public static final String serverBuild = "0.00 (050319.milestone0-main)";
public static final String protocolBuild = "1";
public DatagramSocket serverSocket;
public boolean isRunning = false;
public Thread clientHandler;
public GameServer(int port, String serverName) {
System.out.println("Server> Starting a server on port: " + port + ".");
System.out.println("Server> " + serverName + " running on server build " + serverBuild + ".");
System.out.println("Server> Using protocol ID: " + protocolBuild + ".");
isRunning = true;
try {
serverSocket = new DatagramSocket(port);
}catch(Exception ex) {
System.out.print("Server> ");
ex.printStackTrace();
}
clientHandler();
}
public void clientHandler() {
clientHandler = new Thread(new Runnable() {
public void run() {
while(isRunning) {
byte[] buffer = new byte[256];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
try {
serverSocket.receive(packet);
System.out.println("Server> " + new String(packet.getData(), 0, packet.getData().length));
} catch (IOException e) {
System.out.print("Server> ");
e.printStackTrace();
}
}
}
});
clientHandler.start();
}
}
这是我的客户端源代码:
public class GameClient {
public GameClient() {
try {
DatagramSocket socket = new DatagramSocket(25567);
byte[] buffer = new byte[256];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("192.168.0.24"), 25567);
socket.send(packet);
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
客户端非常简单,因为我在寻找为什么我的服务器不工作。
解决方案
控制台不打印任何东西,因为客户端发送的包是一个空数组。服务器工作正常。
推荐阅读
- javascript - 如何理解JavaScript的分析和执行原理
- javascript - 尝试制作自动点击器的 javascript 新手
- math - 如何使用单个参数定义曲线变换?
- python - 为什么Python可以实现a,b = b,a
- css - CSS无限循环问题
- r - 在 R 中使用 tidyverse 在单个 tibble 中汇总分组和未分组的数据
- networking - 当我尝试在网关中 ping “eth1”的 ip 时获取“请求时间”
- python - pyautogui 用于特定窗口的多任务处理
- android-studio - Android Studio:导入 org.tensorflow.Operation 似乎不起作用
- javascript - 为什么我的 React 应用程序中的 console.logs 和 UI 不显示相同的状态变量?