2014-07-26 3 views
0

최근 앱에서는 로컬 네트워크 (WiFi)의 UDP를 통해 다른 아이폰으로 데이터 (대부분 오디오)를 전송할 수있었습니다. 그리고 지금은 WAN에서도 똑같이해야합니다. 너희들이 올바른 방향으로 나를 가리켜 주실 수 있습니까? 이것을 달성하기 위해 필요한 것은 무엇입니까?WAN을 통해 iPhone에서 iPhone으로 UDP 보내기

GCDAsyncSocket을 사용하여 소켓을 관리하고 있습니다. 두 대의 장치의 IP 주소를 유지할 수있는 서버가 있어야한다고 생각합니다.

또한 NAT/방화벽 뒤의 장치에 어떻게 연결할 수 있습니까? 내가 공개 IP 주소 (예 : http://checkip.dyndns.com/에서 스크랩)를 가져야한다고 생각합니다. 그런 다음 traceroute해야합니까? 아니면 NSLookup? 아니면 피기 백? 아니면 UDP 구멍 펀칭을 사용해야합니까?

저는 많은 의문점이 있습니다. 그러나 저에게 올바른 기술을 가르쳐 주시면 매우 감사 할 것입니다.

답변

0

NAT 뒤에있는 두 참가자 간의 통신을 위해서는 언급 한 것처럼 구멍 펀칭을 사용할 수 있습니다. 여기에 설명되어 있습니다. http://en.wikipedia.org/wiki/UDP_hole_punching#Flow

기본적으로 공용 IP 및 포트가있는 서버는 iPhone의 포트 번호를 공유하는 데 사용됩니다. 그러나 NAT는 iPhone이 말하는 다른 IP마다 다른 포트를 사용할 수 있습니다. 따라서 iPhone1이 서버로 데이터를 보내면 NAT는 포트 X를 사용하지만 iPhone1이 데이터를 다른 IP로 보내려면 NAT가 포트 Y를 선택할 수 있습니다. (http://en.wikipedia.org/wiki/Network_address_translation#Symmetric_NAT 참조)

이 문제를 해결하기 위해 UPnP이라는 프로토콜이 있습니다 덜 알려져있는 것은 NAT Port Mapping Protocol입니다. UPnP에 정통하지는 않지만 누군가 다른 정보를 제공 할 수 있습니다.

프로토콜 NAT-PMP를 사용하면 장치에 외부 포트를 전달하도록 동적으로 요청할 수 있습니다. http://en.wikipedia.org/wiki/NAT_Port_Mapping_Protocol, RFC 6886을 참조하십시오. 외부 포트를 "예측"하여 NAT를 통한 연결을 설정할 수 있습니다.

관련 문제