Я пишу простой клиент/сервер на 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();
}
}
}
Клиент очень простой, потому что я искал, почему мой сервер не работает.




Консоль ничего не печатает, потому что клиент отправляет пакет — это пустой массив. Сервер работает правильно.
Этот ответ бесполезен. Не могли бы вы объяснить, что не так с кодом OP?
@ maio290 плохие вопросы порождают плохие ответы ... вопрос должен быть помечен как не относящийся к теме.
@ maio290 Код о клиенте другой. сокет.connect()
Это не пустой массив. Это массив из 256 элементов, полный нулей. Не то же самое.
Я имею в виду, что каждый байт в массиве равен '', поэтому не печатайте на консоли. Вы можете попробовать String.getbytes() заменить буфер, а затем проверить результат.
Каково значение
portна сервере? И какой IP-адрес хоста сервера? И почему вы используете один и тот же порт для сервера и клиента в клиенте?