1

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

客户端 1 ------> 服务器 ------> 客户端 2 或客户端 1 <------ 服务器 <------ 客户端 2

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

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

4

2 回答 2

1

在集中式服务器的帮助下,在客户端之间建立直接连接是可能的,但并非易事。这称为Nat Traversal,其工作原理是使用“假”UDP 数据包在防火墙上打孔。这项技术是由 Skype 开创的(或至少被带到了最前沿)。
有关其工作原理的链接和一般概述,请参阅 Wiki 文章。

于 2012-05-24T16:31:31.730 回答
0

1 - 你的问题似乎与 c/c++/winsock 没有任何关系。

2 - 你现在可能正在以最好的方式做这件事,随着负载的增加,你只需要扩展你的服务器(而不是让非常复杂的客户端尝试点对点连接)

于 2012-05-24T16:28:30.403 回答