안드로이드와 임베디드간의 TCP 통신시 패킷 손실 문제...
글쓴이: mg2000 / 작성시간: 월, 2018/01/22 - 6:11오후
제가 안드로이드를 서버로 임베디드 기기를 클라이언트로 해서 TCP 통신을 하는데...
웬만해서는 크게 문제가 없는데, 간혹 몇몇 임베디드 기기와 통신이, 안드로이드쪽에서 패킷을 보냈는데 그에
대한 ACK를 받지 못하는 경우가 있네요.
그냥 허브 한대에 랜선으로 연결했는데, 이렇게 단순 연결시에도 패킷이 소실될 가능성이 있는 건지...
패킷이 100% 한번에 전달되는 것을 보장할 수 없더라도,
응답이 없으면 빠르게 재전송을 시도하고 싶은데,
안드로이드 쪽에서는 2초 정도 후에 재전송을 시도하더라고요.
보통 1~200ms내에 응답이 없으면, 이미 전송이 안됬다고 봐도 좋을 환경인데...
재전송을 빠르게 재시도 할 수 있는 방법은 없을까요?
자바에서는 재전송 타이머 시간에 대해 별다른 설정 옵션이 없는 것 같고...
Forums:
자바에서는 방법이 없고, 리눅스 커널에 의존합니다.
자바에서는 방법이 없고, 리눅스 커널에 의존합니다. 그런데 이걸 시도하려면 안드로이드 쪽의 루트 권한이 필요하죠. 세세한 제어가 필요하다면 차라리 UDP를 사용하시는 게 나을 겁니다.
https://unix.stackexchange.com/questions/210367/changing-the-tcp-rto-value-in-linux
결국은...
UDP로 만드는 수밖에 없나요... ㅜ.ㅡ
댓글 달기