我正在寻找一个可靠的TCP流眩晕解决方案。我尝试过特技(美国康奈尔大学)和XSTUNT(台湾大学)。但它们看起来既老又没用。
我想做的是通过c在两个不同网络中的两个客户端之间传输文件。如果您有以下任何一种解决方案,请通知我:
基于1和UDP的C客户端/服务器解决方案#
2-任何基于TCP的STUN服务器
最佳答案
Stuntman是支持TCP stun的stun服务器。
www.stunprotocol.org网站
在那个网站上,有一些指向一些示例代码的链接,包括客户端库的c实现。大多数都是针对udp的,但是只要做一点工作,您就可以通过修改现有的udp代码库之一来为tcp stun角色化您自己的c代码。
之后,您仍然需要实现一个信令服务来交换地址候选(直接或通过stun获得)并执行您自己的类似ICE的连接检查。
对于TCP,简单的解决方案是让两个端点都使用两个套接字。一个套接字或侦听,另一个用于连接,但都共享同一个本地端口(ala-so-reuseaddr socket选项)。
另一种解决方案是让每个端点只使用一个套接字。两个端点都尝试重复进行TCP同步连接。如果nat表现良好,就可以建立连接。
nat遍历,尤其是tcp nat遍历,并不是一门精确的科学。通常情况下,两个端点无法直接连接,必须返回到UDP和/或通过诸如TURN之类的中继解决方案。
将上面的所有信息与我去年在基本p2p/nat traversalhere上写的答案合并。
关于c# - 用于TCP流的STUN服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19697086/