有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java UDP程序包丢失跟踪

为了实现可靠的连接,必须使用TCP

但是,我想知道是否有办法修改我的代码,以便在UDP中检查丢失的数据包

 try {
        DatagramSocket socket = new DatagramSocket(5000);

        while(true) {
            byte[] buffer = new byte[50];
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
            socket.receive(packet);
            System.out.println("Text received is: " + new String(buffer, 0, packet.getLength()));

            String returnString = "echo: " + new String(buffer, 0, packet.getLength());
            byte[] buffer2 = returnString.getBytes();
            InetAddress address = packet.getAddress();
            int port = packet.getPort();
            packet = new DatagramPacket(buffer2, buffer2.length, address, port);
            socket.send(packet);
        }

    } catch(SocketException e) {
        System.out.println("SocketException: " + e.getMessage());
    } catch(IOException e) {
        System.out.println("IOException: " + e.getMessage());
    }
}

共 (1) 个答案

  1. # 1 楼答案

    由于传输协议不提供设施,应用程序协议需要这样做

    例如,您可以让发送方在每条消息中添加一个序列号,然后接收方就会知道某个数据报已丢失或(也可能)重复

    这可以让你发现损失,但却无法让你从中恢复过来

    当然,你需要在接收器中跟踪每个发送者的预期序列号