Networking Winsock+;C+;客户对客户+;发送和接收数据

Networking Winsock+;C+;客户对客户+;发送和接收数据,networking,architecture,client-server,firewall,nat,Networking,Architecture,Client Server,Firewall,Nat,我的问题很简单。我实现了一个系统,可以在两个客户端之间发送数据,而无需使用它们之间的直接连接(无需打开客户端防火墙中的端口),遵循以下模型: 客户端1------->服务器------->客户端2 或 客户端11-您的问题似乎与c/c++/winsock没有任何关系 2-您现在可能正在以最好的方式进行操作,随着负载的增加,您只需要扩展服务器(而不是创建尝试点对点连接的极其复杂的客户端)1-您的问题似乎与c/c++/winsock无关 2-您现在可能正在以最好的方式进行此操作,随着负载的增加,您只

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

客户端1------->服务器------->客户端2 或
客户端11-您的问题似乎与c/c++/winsock没有任何关系


2-您现在可能正在以最好的方式进行操作,随着负载的增加,您只需要扩展服务器(而不是创建尝试点对点连接的极其复杂的客户端)

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


2-您现在可能正在以最好的方式进行此操作,随着负载的增加,您只需要扩展服务器(而不是创建尝试点对点连接的极其复杂的客户端)

在集中服务器的帮助下,在客户端之间建立直接连接是可能的,但不是微不足道的。这就是所谓的,通过使用“假”UDP数据包在防火墙上打孔来实现。 Skype开创了这项技术(或至少将其推向了最前沿)。

请参阅Wiki文章,了解其工作原理的链接和一般概述。

在集中式服务器的帮助下,在客户端之间建立直接连接是可能的,但不是微不足道的。这就是所谓的,通过使用“假”UDP数据包在防火墙上打孔来实现。 Skype开创了这项技术(或至少将其推向了最前沿)。

请参阅Wiki文章中的链接和工作原理概述。

感谢您的回复。我在看“UDP打孔”,这看起来很简单,可以实现。唯一的问题是我需要保持一定的完整性来发送/接收数据,因为我正在开发的软件是一个shell,其中命令必须以正确的顺序发送,下载/上传文件必须准确。因此,使用“TCP打孔”对我的案例更有趣。假设我使用这个方法,我需要一个服务器S和两个客户机:C1,C2。C1和C2连接到S。S识别客户机的地址,并在客户机相互了解后发送每个地址的信息。我不明白的是,整个过程如下:如果客户端已经连接到服务器,并且它们的门被锁上了,那么如何将客户端与另一个客户端连接?感谢您的回复。我在看“UDP打孔”,这看起来很简单,可以实现。唯一的问题是我需要保持一定的完整性来发送/接收数据,因为我正在开发的软件是一个shell,其中命令必须以正确的顺序发送,下载/上传文件必须准确。因此,使用“TCP打孔”对我的案例更有趣。假设我使用这个方法,我需要一个服务器S和两个客户机:C1,C2。C1和C2连接到S。S识别客户机的地址,并在客户机相互了解后发送每个地址的信息。我不明白的是,整个过程如下:如果客户端已经连接到服务器,并且它们的门被锁上了,那么如何将客户端与另一个客户端连接?感谢您的回复。我在看“UDP打孔”,这看起来很简单,可以实现。唯一的问题是我需要保持一定的完整性来发送/接收数据,因为我正在开发的软件是一个shell,其中命令必须以正确的顺序发送,下载/上传文件必须准确。因此,使用“TCP打孔”对我的案例更有趣。假设我使用这个方法,我需要一个服务器S和两个客户机:C1,C2。C1和C2连接到S。S识别客户机的地址,并在客户机相互了解后发送每个地址的信息。我不明白的是,整个过程如下:如果客户端已经连接到服务器,并且它们的门被锁上了,那么如何将客户端与另一个客户端连接?感谢您的回复。我在看“UDP打孔”,这看起来很简单,可以实现。唯一的问题是我需要保持一定的完整性来发送/接收数据,因为我正在开发的软件是一个shell,其中命令必须以正确的顺序发送,下载/上传文件必须准确。因此,使用“TCP打孔”对我的案例更有趣。假设我使用这个方法,我需要一个服务器S和两个客户机:C1,C2。C1和C2连接到S。S识别客户机的地址,并在客户机相互了解后发送每个地址的信息。我不理解的是整个过程如下:如果客户机已经连接到服务器,并且他们的门被锁上了,如何将客户机与其他客户机连接?