STUN-сервер для потока TCP

Я ищу надежное решение STUN для потока TCP. Я пробовал STUNT (от Корнеллского университета в США) и XSTUNT (от Тайваньского университета). Но они оба кажутся старыми и бесполезными.

Что я хочу сделать, так это передавать файлы между двумя клиентами в двух разных сетях через С#. Пожалуйста, дайте мне знать, если у вас есть какое-либо решение для одного из следующих: 1- и клиент-серверные решения на основе UDP для C # 2- любой STUN-сервер на основе TCP


person mazkopolo    schedule 31.10.2013    source источник


Ответы (1)


Stuntman — это STUN-сервер, поддерживающий TCP STUN.

www.stunprotocol.org

На этом сайте есть несколько ссылок на примеры кода, включая реализации C# для клиентских библиотек. Большинство из них предназначены для UDP, но, немного поработав, вы можете создать свой собственный код C# для TCP STUN, изменив одну из существующих баз кода UDP.

После этого вам все равно нужно будет внедрить службу сигнализации для обмена адресами-кандидатами (полученными напрямую или через STUN) и выполнять собственные проверки подключения, подобные ICE.

Для TCP простое решение состоит в том, чтобы обе конечные точки использовали два сокета. Один сокет или прослушивание, а другой для подключения, но оба используют один и тот же локальный порт (опция сокета аля SO_REUSEADDR).

Другое решение состоит в том, чтобы каждая конечная точка использовала только один сокет. Обе конечные точки неоднократно пытаются выполнить одновременное TCP-подключение. Если NAT ведет себя хорошо, соединение может быть установлено.

Обход NAT, особенно обход TCP NAT, не является точной наукой. Всегда будут случаи, когда две конечные точки не могут подключиться напрямую, и им придется либо вернуться к UDP, либо использовать решение ретрансляции, такое как TURN.

Объедините всю приведенную выше информацию с ответом, который я написал в прошлом году о базовом обходе P2P/NAT здесь.

person selbie    schedule 01.11.2013