2014-10-30 3 views
1

라우터에서 포트를 열거 나 로컬 네트워크에서 전달하지 않고 (java) 클라이언트를 서로 연결할 수 있기를 원합니다. 나는 webtrc의 행동을 모방하고 싶지만 자바에서는 시그널링을 위해 서버를 사용한다. 서버는 서로 연결하려는 두 클라이언트의 세션 키를 받아야하며 첫 번째 클라이언트 키를 두 번째 클라이언트로 보내고 그 반대의 경우도 마찬가지입니다. 신호를 보낸 후에 두 클라이언트는이 키를 사용하여 서로 연결할 수 있으며 패킷은 포트 및 전달을 열지 않고도 라우터를 통해 찾을 수 있습니다.서버를 사용하여 클라이언트가 서로 직접 연결되도록 리디렉션하는 방법

목표는 하나의 클라이언트에서 읽을 수 있고 다른 서버로 쓸 수있는 거대한 대역폭의 서버가 필요없는 응용 프로그램을 작성할 수있는 프레임 워크를 만드는 것입니다. 서로에게 데이터를 보냅니다. 제가 요구하는 것은 이것에 대한 지침이 구현 될 수 있다는 것입니다.

TLDR : 두 개의 완전히 다른 네트워크에서 공용 서버를 사용하고 클라이언트에 대한 라우터 구성없이 두 클라이언트를 직접 연결할 수 있기를 원합니다.

답변

1

이 기술은 펀치 구멍이라고

"홀 펀치가 제한적인 방화벽. 온라인 게임, P2P 및 VoIP와 같은 애플리케이션에 사용 뒤에 모두 별도의 조직에서 두 당사자 사이의 통신을 설정하는 컴퓨터 네트워킹 기술이다, 두 클라이언트 모두 외부 및 내부 주소 정보를 알 수있는 제한되지 않은 제 3 자 서버와의 연결을 설정합니다. 각 클라이언트가 서버에 요청을 시작 했으므로 서버는 해당 세션에 할당 된 IP 주소 및 포트 번호를 알고 있습니다 다른쪽에. " 위키 피 디아

에서

은 또한 당신의 답변이 answer

+0

덕분에 봐. 귀하의 의견을 구멍 펀치에 대해 많이 읽었습니다 및 구현 시도했지만 setReuseAddress (true) 서버 및 serversocket 소켓에 모두 사용하고 있지만 "java.net.BindException 얻을 : 주소 이미 있음 두 번째 바인딩에서 "사용"하십시오. 고마워, 고마워. 구현 오류에 대한 또 다른 질문을 만듭니다. –