UDP로 Java에서 채팅을 구현했습니다. 배열 목록의 데이터를 다른 클라이언트에 보내는 스레드와 다른 클라이언트의 데이터를받는 스레드가 있습니다. 배열리스트는 메소드로 채울 수 있습니다.UDP 패킷 손실 수정
메시지를 보내려면 배열 목록에서 바이트 []가 선택되고 길이가 전송 된 다음 바이트가 전송됩니다.
이제 패킷 손실에 대해 생각하고 있습니다. 이를위한 수정을 어떻게 구현할 수 있습니까? 메시지를 다시 보내는 것은 매우 비효율적입니다. 메시지의 길이를 알고 있기 때문에 수신기가 메시지를받지 못하면 메시지를 다시 보낼 수 있습니다. 그러나 두 클라이언트 모두에서 두 번째 소켓이 필요하므로 수신기와 발신자가 두 개의 스레드가됩니다. 또 다른 문제는 데이터의 길이가 손실되고 데이터 패키지가 읽히는 패킷 길이가 길 때 발생합니다.
어떻게 구현할 수 있습니까?
는라는 TCP위한 간단하고 잘 테스트 프로토콜이 있습니다
UDP 구멍 펀칭을하는 것은 TCP를 사용하지 않는 이유가 아니며 두 개의 스레드가 있다는 사실은 두 번째 소켓이 필요한 이유가 아닙니다. – EJP