Как я могу получить данные - PullRequest
0 голосов
/ 17 июня 2019

Мой слушатель ->

    public void startListening(){
        String[] details = session.split(":");
        SessionUser user = new SessionUser();
        System.out.println("Waiting for another user..");
        listening = new Thread("listen thread"){
            public void run() {
                while(true) {
                    while (user.users < 2) {
                        try {
                            Socket socket1 = socket.accept();
                            System.out.println(socket1.getInetAddress().toString() + " has joined...");
                            user.users++;
                            socket1.close();
                        } catch (Exception e) {
                            System.out.println("Ran into a error!");
                        }
                    }
                }
            }
        };
        listening.start();

    }

Мой отправитель ->

    public void join(InetAddress address, int port){
        byte[] data = new byte[1024];
        DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
        try {
            DatagramSocket socket = new DatagramSocket();
            System.out.println("Attempting to join session <" + address.toString() + ":" + port + ">!");
            socket.send(packet);
            System.out.println("Joining......");
        }catch (Exception e){
            System.out.println("Unable to connect, this may be a server error, or you've entered incorrect details!");
        }
    }

Поэтому я просто хочу отправлять пакеты на сервер хостов при подключении, однако при запуске этого яЯ не вижу никаких результатов, вот картинка, которая, вероятно, объяснит это лучше, чем я могу -> нажмите меня

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Измените свой сервер, чтобы получать пакеты

DatagramSocket serverSocket = new DatagramSocket(port);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
serverSocket.receive(packet); // This will block until a packet is received
System.out.println("Received: " + new String(packet.getData()));

Попробуйте протестировать с вашим клиентом

public void join(InetAddress address, int port){
        byte[] data = "Hello".getBytes();
        DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
        try {
            DatagramSocket socket = new DatagramSocket();
            System.out.println("Attempting to join session <" + address.toString() + ":" + port + ">!");
            socket.send(packet);
            System.out.println("Joining......");
        }catch (Exception e){
            System.out.println("Unable to connect, this may be a server error, or you've entered incorrect details!");
        }
}

Если вам нужно поддерживать соединение, лучше использовать TCP с сокетами.

1 голос
/ 17 июня 2019

В вашем получателе вы читаете из сокета TCP, тогда как ваш отправитель отправляет пакет UDP.Это не может работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...