더북(TheBook)

이번에는 P2P 홀펀칭 상태 변화 감지하기를 알아봅시다. P2P 홀펀칭이란 인터넷 공유기 뒤에 있는 클라이언트끼리도 서로 P2P 통신을 할 수 있는 기법입니다. 홀펀칭을 하는 데 걸리는 시간은 수 밀리초에서 수 초가 걸립니다. 어떤 인터넷 공유기에서는 홀펀칭이 불가능하기도 합니다.

인터넷 공유기는 우리 주변에 많이 있습니다. 스마트폰의 3G/4G 데이터 통신도 사실은 거대한 인터넷 공유기(Carrier-grade NAT)입니다. 따라서 P2P 홀펀칭은 반드시 있어야 하는 기법입니다.

홀펀칭이 되어 있지 않으면 P2P 네트워킹은 서버를 통해서 간접적으로 이루어집니다. 이를 P2P 릴레이라고 합니다. P2P 릴레이를 할 때는 직접 P2P로 네트워킹을 하는 것보다 조금 더 비효율적입니다. 일단 릴레이 서버를 통해서 네트워킹을 하기 때문에 그만큼 전송되는 데 걸리는 시간이 길어집니다.

경우에 따라 P2P 네트워킹이 홀펀칭되어서 직접 이루어지는지, 아직 홀펀칭이 되어 있지 않아 P2P 네트워킹이 릴레이되어서 이루어지는지 알고 싶을 것입니다. 프라우드넷에서는 이를 감지할 수 있는 여러 가지 방법을 제공합니다. 그중 하나가 바로 OnChangeP2PRelayState() 함수 콜백입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.