我如何接收数据

How do i receive data

我的听众 ->

    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!");
        }
    }

所以我只是想在连接时将数据包发送到主机服务器,但是,当我 运行 我没有看到任何类型的输出时,这里有一张图片可能会比我更好地解释它可以 -> click me

在您的接收器中,您正在从 TCP 套接字读取数据,而您的发送器正在发送 UDP 数据包。这行不通。

更改您的服务器以接收数据包

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。