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입니다.