C# 用于TCP流的STUN服务器

C# 用于TCP流的STUN服务器,c#,tcp,flow,stun,C#,Tcp,Flow,Stun,我正在为TCP流寻找可靠的STUN解决方案。我试过特技(美国康奈尔大学)和XSTUNT(台湾一所大学)。但它们看起来都很老,毫无用处 我想做的是通过C#在两个不同网络中的两个客户端之间传输文件。如果您对以下任一问题有任何解决方案,请告知我: 基于1和UDP的C客户端/服务器解决方案# 2-任何基于TCP的STUN服务器都是支持TCP STUN的STUN服务器 www.stunprotocol.org 在该站点上,有一些指向一些示例代码的链接,包括客户端库的C#实现。大多数都是针对UDP的,但只需

我正在为TCP流寻找可靠的STUN解决方案。我试过特技(美国康奈尔大学)和XSTUNT(台湾一所大学)。但它们看起来都很老,毫无用处

我想做的是通过C#在两个不同网络中的两个客户端之间传输文件。如果您对以下任一问题有任何解决方案,请告知我: 基于1和UDP的C客户端/服务器解决方案# 2-任何基于TCP的STUN服务器都是支持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遍历的答案合并