簡體   English   中英

Java DatagramSocket 不接收數據

[英]Java DatagramSocket doesn't receive data

我正在用 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();
        }

    }

}

客戶端非常簡單,因為我在尋找為什么我的服務器不工作。

控制台不打印任何內容,因為客戶端發送的包是一個空數組。 服務器工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM