Java DatagramSocket не получает данные - PullRequest
0 голосов
/ 05 марта 2019

Я пишу простой клиент / сервер в 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();
        }

    }

}

Клиент очень прост, потому что я искал, почему мой сервер не работает.

1 Ответ

0 голосов
/ 05 марта 2019

Консоль ничего не печатает, потому что клиент отправляет пакет в виде пустого массива.Сервер работает правильно.

...