2013-10-31 2 views
2

TCP 흐름을위한 안정적인 STUN 솔루션을 찾고 있습니다. STUNT (미국의 cornell University)와 XSTUNT (대만의 University)가 시도했습니다. 그러나 그들은 둘 다 오래되고 쓸모없는 것처럼 보입니다.TCP 흐름을위한 STUN 서버

내가 원하는 것은 C#을 통해 두 개의 서로 다른 네트워크에있는 두 클라이언트간에 파일을 전송하는 것입니다. 당신이 중 하나에 대한 해결책이 있으면 알려 주시기 바랍니다 다음 1 그리고

답변

4

Stuntman는 TCP의 STUN을 지원하는 STUN 서버입니다 C# 2 모든 TCP 기반의 STUN 서버의 클라이언트/서버 솔루션을 UDP 기반 . 이 사이트에서 www.stunprotocol.org

는, 클라이언트 라이브러리에 대한 C#을 구현을 포함하여 몇 가지 예제 코드에 대한 몇 가지 링크가있다. 대부분 UDP로되어 있지만 약간의 작업만으로도 기존의 UDP 코드베이스 중 하나를 수정하여 TCP STUN에 대한 C# 코드를 작성할 수 있습니다.

그런 다음 주소 후보 (직접 또는 STUN을 통해 얻음)를 교환하고 자신의 ICE와 같은 연결 확인을 수행하기 위해 신호 서비스를 구현해야합니다.

TCP의 경우 두 가지 끝점을 모두 사용하는 것이 쉬운 방법입니다. 하나의 소켓 또는 수신 대기 중 하나와 연결을위한 또 다른 소켓 - 그러나 둘 다 동일한 로컬 포트 ​​(ala SO_REUSEADDR 소켓 옵션)를 공유합니다.

다른 해결책은 각 끝점에 단 하나의 소켓 만 사용하는 것입니다. 두 엔드 포인트는 TCP 동시 연결을 반복적으로 시도합니다. NAT가 잘 작동하면 연결이 가능합니다.

NAT 통과, 특히 TCP NAT 통과는 정확한 과학이 아닙니다. 두 엔드 포인트가 직접 연결될 수없고 UDP로 폴백하거나 TURN과 같은 릴레이 솔루션을 통과해야하는 경우가 항상 있습니다.

위의 정보를 모두 합쳐서 작년에 쓴 P2P/NAT 통과 기본 내용은 here입니다.