Java 및 UDP 발신자 및 수신자를 사용하는 클래스 용 프로젝트 작업 중입니다. 문제의 전제는 텍스트 파일을 읽고, 내용을 패킷에 저장하고, 패킷을 보내고, 패킷을 수신하고, 화면에서 파일을 읽고, 동일한 텍스트 파일의 수신 컴퓨터에 새 텍스트 문서를 작성하는 것입니다 .Java UDP 패킷 송수신 문제
나는 모든 작업을하고 있습니다. 로컬 호스트로 테스트 할 때 100 % 시간 동안 작동하는 것으로 보입니다. 내 노트북에서 PC로 보낼 때 100 % 작동하는 것으로 보입니다. 그러나 내 PC에서 내 랩톱으로 보낼 때 작동하지 않습니다.
몇 가지 System.out 디버그 문을 통해 보낸 정보 중 일부를 확인할 수 있습니다. 나는 텍스트 파일이 7 개의 패킷을 가져야한다는 것을 안다. 그러나 내 PC에서 랩톱으로 보낼 때마다 46 패킷을 보내고 있다고합니다.
필자의 초기 생각은 패킷이 순서가 틀린 것으로 보입니다. 내가 보내는 첫 번째 패킷은 수신자가 수신해야하는 패킷의 수를 나타냅니다. 어쩌면 "46"이 "F"라는 자본을 나타낼 수 있다고 생각했기 때문에 모든 자본 "F"를 제거했으며 여전히 46 패킷을 보내고 있다고합니다.
나는 너무 많은 정보를 한꺼번에 보내고 싶었 기 때문에 Thread.sleep()을 사용하여 수신자가 시간을 지킬 수있을 것이라고 생각했다.
마지막으로, Oracle 설명서와 온라인 게시물을 통해 UDP를 신뢰할 수 없다는 사실을 알게되었습니다. 그래서 잠재적으로 그렇게 할 수 있다고 가정하고 있습니다. 그러나, 그게 문제가 될 수 있는지 확인하고 싶습니다.
누군가가 더 멋진 아이디어가 될 수있는 문제에 대해 더 좋은 아이디어가 있다면!
감사합니다.
굉장한 답변, 고마워! 나는 그것을 시험하기로 결정했다. 나는 그것이 우연인지 아닌지 잘 모르겠다. 나는 노트북에서 내 컴퓨터로 Youtube 비디오를 재생 해 보았습니다. UDP 수신기는 106 패킷을 받았으며 궁극적으로 메시지를 제대로받지 못했습니다. 나는 그 (것)들을 전부 돌았 다 그들을 다시 보내고 그것은 작동했다. 내 컴퓨터에서 내 랩톱으로 동일한 실험을했는데 동일한 결과가있었습니다. 우연이 아닌지 다시 한 번 확신하지만, 당신이 말한 것과 실험에서 내 문제에 대한 해답 인 것 같습니다. 고마워요 :) – BearForceOne
@ BearForceOne - 그게 문제로 패킷 손실을 가리 킵니다. 단일 패킷을 잃어 버리면 전체 UDP 메시지가 손실되고 결과적으로 파일 전송이 실패합니다. –