2013-04-05 2 views
1

그래서 UDP를 통해 초당 15 회 5Kb 패킷을 보내는 앱을 작성하고 있습니다. 내가 몇 가지 패킷을 잃을 것입니다 이해하지만 처음 몇 초 후에 내 모든 패킷을 잃는 것 같습니다. 10 초마다 한 번씩 5Kb 패킷을 보내려면 속도를 늦더라도 여전히 잃어 버릴 것입니다. 이게 뭐야?Android UDP 패킷 손실

+1

코드가 보이지 않으면이 기능을 사용하기가 어려울 수 있습니다. –

답변

3

모두 삭제 된 것은 놀라운 일이 아닙니다. 페이로드가 bigger than 512 bytes이면 네트워크에서 빠져 나올 가능성은 거의 없습니다. 라우터의 MTU와 라우터의 UDP/인터넷 트래픽에 할당 된 대역폭의 양에 따라 다릅니다.

+0

그래서 수동으로 패킷을 512 개의 청크로 분할하여 별도로 보내면 같은 양의 데이터를 보내고 있습니다. 필자는 항상 패킷이 라우터에 의해 올바른 MTU 크기로 분류되고 패킷 대상으로가는 도중 다른 라우터에 의해 자동으로 분할 된 다음 대상에 도달하면 다시 어셈블됩니다. –

+0

예 페이로드 크기가 줄어들면 도움이됩니다. –

+0

위대한 일을했습니다! 나는 패킷을 쪼개서 다른 쪽 끝에 재 조립해야하는데 약간의 오버 헤드가 필요했지만 작동한다. 고맙습니다. UDP를 다룰 때이 문제가 여러 번 있었지만 이것이 문제라는 것을 깨닫지 못했습니다. –

2

약 1260 바이트보다 큰 UDP 데이터 그램을 얻으려면 운이 좋습니다. 라우터를 통한 UDP에 대한 일반적으로 허용되는 제한은 534 바이트이며 IPv4 비 단편화 최소값 인 576 바이트에서 비롯된 것입니다.

+0

@downvoter 귀하의 설명? – EJP