用于TCP流的STUN服务器

maz*_*olo 2 c# tcp flow stun

我正在为TCP流寻找可靠的STUN解决方案。我曾尝试过STUNT(美国康奈尔大学)和XSTUNT(美国台湾大学)。但是它们看上去既旧又无用。

我要做的是通过C#在两个不同网络中的两个客户端之间传输文件。如果您有以下两种解决方案,请告诉我:1-针对C#的基于UDP的客户端/服务器解决方案2-任何基于TCP的STUN服务器

sel*_*bie 5

Stuntman是支持TCP STUN的STUN服务器。

www.stunprotocol.org

在该站点上,有一些指向一些示例代码的链接,包括客户端库的C#实现。大多数都是针对UDP的,但是您只需做一点工作,就可以通过修改现有UDP代码库之一来为TCP STUN扮演自己的C#代码。

之后,您仍然需要实施信令服务来交换地址候选者(直接或通过STUN获得)并进行自己的类似于ICE的连接检查。

对于TCP,简单的解决方案是使两个端点都使用两个套接字。一个套接字或侦听套接字,另一个用于连接-但这两个套接字共享相同的本地端口(ala SO_REUSEADDR套接字选项)。

另一种解决方案是让每个端点仅使用一个套接字。两个端点都反复尝试进行TCP同时连接。如果NAT表现良好,则可以建立连接。

NAT遍历,尤其是TCP NAT遍历,并不是一门精确的科学。在某些情况下,总是存在两个端点无法直接连接的情况,或者必须回落到UDP和/或通过诸如TURN之类的中继解决方案。

将以上所有信息与我去年在此处编写的有关基本P2P / NAT遍历的答案合并。