3g 환경(사설ip)에서 UDP 통신을 어떻게 가능하게 만들 수 있나요?
글쓴이: 유훈이 / 작성시간: 수, 2012/04/11 - 3:10오후
안드로이드 프로그래밍 중입니다.
3g로 인터넷을 연결하게되면
각 통신사에서 할당해주는 사설ip를 받게 되어지는데요~
이렇게 되니 UDP 통신을 일반적인 방법으론 할 수가 없더군요..
UDP를 위해 12121포트로 소켓을 연다해도~
통신사측이 공인아이피의 12121포트를 제 폰으로 포트포워딩을 해주는것이 아니니
외부에서 공인아이피:12121 로 UDP패킷을 보내봤자 제 폰까지 도달을 하지 못합니다.
제가 알기론 카톡이 UDP를 사용하여 구현된걸로 알기에 분명 해결법이 있는것 같은데
아무리 뒤져봐도 해결방법이 없군요... 혹시 아시는 분 계시면 도와주세요!!!
(*평소엔 생각 못했는데;; 사설ip로 포트포워딩이 안된 포트를 사용하여 TCP 서버의 소켓에
바인딩을 해버리면~ 소켓끼리 통신이 가능하지 않습니까? 이것도 어떻게 이루어지는건지
궁금합니다. 사설ip의 해당 포트까지 어떻게 binding이 되었을까요? 이게 왠지
UDP통신의 답일것 같은데...)
도움 요청합니다!! 고수분들 도와주세욥!!!!
Forums:
.....
뽐뿌에도 글 올리셨나요?
카카오톡 자체 서버 경유 안하고서는 안된다니까요....
왜 UDP를 사용한다고 하는게 왜 꼭 그게 반드시 기기만 가지고 구현이 가능하다고 생각하시는겁니까????
UDP 홀 펀칭이라는거 찾아보시면 알겠지만 이것도 서버가 필요 합니다.
카카오톡이 UDP라구요?
그건 어떻게 알수있죠?
제가알기론 HTTP기반이라고 들은거 같은데요?
단말에서 먼저 외부로 접속을 시도하게 하는 건 어떨까요?
단말에서 접속할 외부 IP를 알고 미리 있다면, 먼저 12121포트로 UDP소켓을 단말에서 열어서
외부IP의 특정 포트에 연결을 하고 UDP를 끊지 않고 계속 쓰면,
외부 IP에서 단말의 12121포트로 데이터를 주고 받을 수 있을 것입니다.
카카오톡은 단말의 어플이 미리 알고 있는 서버에 먼저 접속을 하고,
그 세션을 유지하기때문에 서버에서도 푸시 같은 데이터를 보낼 수가 있습니다.
댓글 달기