Winsock + C +客户端到客户端+发送和接收数据

时间:2012-05-24 16:23:27

标签: networking architecture client-server firewall nat

我是一个非常简单的问题。我实现了一个系统,可以在两个客户端之间发送数据而不使用它们之间的直接连接(不在客户端的防火墙上打开端口),遵循以下模型:

客户1 ------>服务器------>客户端2 要么 客户端1< ------服务器< ------ Client2

这个型号运行正常没有任何问题。问题是服务器上的开销大大增加,因为它需要从客户端接收数据,然后立即转发到下一个。

我的问题:是否有更快的方式在客户端之间发送数据?或者将数据从客户端发送到另一个而不使用它们之间的直接连接?

2 个答案:

答案 0 :(得分:1)

使用集中式服务器的帮助在客户端之间建立直接连接是可能的,但不是微不足道的。这称为Nat Traversal,通过使用“假”UDP数据包在防火墙中打孔来实现。 这项技术是由Skype开创的(或者至少是最重要的) 请参阅Wiki文章,了解其工作原理的链接和概述。

答案 1 :(得分:0)

1 - 您的问题似乎与c / c ++ / winsock无关。

2 - 你现在可能以最好的方式做到这一点,因为负载增加你只需要扩展你的服务器(而不是制作试图连接点对点的非常复杂的客户端)