假设我有一个服务器,两个客户端连接到它。(通过 TCP,但没关系)
我的目标是允许这两个客户端之间的直接连接。这是为了允许两个玩家之间直接语音联系,例如,或者他们可能安装的任何其他不需要服务器交互的客户端插件(比如在两者之间玩某种随机游戏)。服务器可以在那里帮助建立连接。
从黄昏的回答中,我得到了几条线索:
http://en.wikipedia.org/wiki/STUN描述了一个算法来做到这一点,以及
http://en.wikipedia.org/wiki/UDP_hole_punching
从中,我得到了更多的线索:
http://www.h-online.com/security/features/How-Skype-Co-get-round-firewalls-747197.html
http://nutss.gforge.cis.cornell.edu/stunt.php -- TCP 可能的 STUN 实现
随着时间的推移,我肯定可以为我的程序设计一些东西。现在我正在使用 C++ 和 TCP(Qt 套接字或 Boost 套接字),但如果需要,我不介意在 C 中执行 UDP 并包装它。
任何有 C 和 C++ 经验的程序员都可以通过链接到示例程序、更新的库或任何其他有用的信息来提供使这更容易的提示。一个有文档的、灵活的、可工作的 C++ TCP 实现将是最好的,但我会接受我得到的!