마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[자바] NAT환경에서 UDP 통신에 대해(Hole Punching). [closed]

0 추천
안드로이드 폰 A 와 B 가 NAT 밑에서 UDP 데이터 통신을 하려고 합니다.

A와 B는 서로의 End Point의 아이피 주소와 포트를 모르기 때문에 서버에 접속 합니다.

서버에서 각자의 공인아이피와 NAT 에서 바꾼 포트를 알려줍니다.

A와 B는 서로의 공인 아이피:바뀐포트 로 접속합니다.

이러면 통신이 잘 되야 하는거 아닌가요?

 

데이터 그램 소켓은 혹시나 포트 바뀔까봐 서버에 보냈던 걸 그대로 다시 데이터 받는걸로 썼구요.

같은 NAT밑에 있는 것 끼리는 되는데 3G나 4G에서는 안되네요.

처음에는 "symmetric이다 / 홀 콘 방식이 아니다" 라고 단정 지어버리려고했는데 꼭 해야 해서요..

데이터그램 채널이라는게 있던데

그걸 이용해 서버에서 채널을 열고 , 두 단말기가 채널에 접속하면 이후 서버가 빠질수 있나요?

빠질 수 있다면 빠진 후에도 단말기 끼리 접속이 원활하게 되나요?

 

 

예 )

A:7771     ->  NAT  ->  x:50000  -> SERVER 에 접속

B:7771    ->  NAT  ->  y:51000 -> SERVER 에 접속

이후 SERVER에서 각자의 아이피 포트 x:50000 , y:51000 을 알려줌.

A는 A:7771 로 데이터 받고 B는 x:50000으로 데이터 전송

B는 B:7771 로 데이터 받고 A는 y:51000으로 데이터 전송

 

자바로 삽질삽질 또삽질 잠을 못자고있네요..살려주세요.
질문을 종료한 이유: 삽질끝에 빛을 봄
sisby (120 포인트) 님이 2013년 2월 23일 질문
sisby님이 2013년 2월 27일 closed
...