用于广域网(WAN)中直接pc到pc通信的c ++库

时间:2011-07-02 16:29:21

标签: c++ networking

这个想法是在两台PC之间建立连接,每台PC只能通过互联网访问连接到另一台PC。两台PC可以在同一个局域网中,也可以在路由器之后,主要的想法是唯一可靠的是互联网接入。

首先,我的问题是:这是可能存在还是存在任何不包含中间体或路​​由配置的解决方案,以允许两台PC之间的直接通信? (记住这个想法是在没有外部配置的情况下直接连接,只允许配置的两个地方是彼此通信的两台PC。)

第二个问题是:如果这是可能的,那么你建议用什么库或什么样的解决方案(c ++方式/库将被赞赏但不是强制性的)

由于

3 个答案:

答案 0 :(得分:1)

一般来说,不,你想要做的事情已经不可能了。

虽然互联网最初是围绕“端到端通信”设计的,但节点之间的网络相对愚蠢,但发生的事情是越来越多的网络设备受阻。

特别是,NAT设备或多或少不可能在互联网上的任意设备之间进行直接点对点连接。

因此,目前大多数系统都依赖于中央设备(两个节点都可以连接),这些设备在这些节点之间代理(或中继)数据包。

答案 1 :(得分:0)

如果您需要通过互联网连接两台PC,那么您可以创建VPN“虚拟专用网络”,这意味着这两台机器实际上位于同一个局域网中。你不需要任何外部配置。要设置vpn,youtube有很多剪辑可以根据你的平台来完成。这就是你想要的吗?

答案 2 :(得分:0)

正如Alnitak所提到的,由于存在NAT,这通常是不可能的。这可能会在某一天改变IPv6。人们已经提出了各种方法来解决这个问题,这Wikipedia article看起来是一个很好的起点。通常这涉及让双方"punch a hole"通过NAT然后允许进一步的通信发生,并且它需要一些可以从两个端点路由的第三方。

另一个问题是,对于许多PC而言,NAT /防火墙设备本身往往具有动态分配的IP地址,因此再次要求某些中央服务“代理”该连接。大多数互联网接入提供商将为静态IP地址收取额外费用,然后与端口转发一起为您的PC提供始终可路由的IP地址/端口组合。

相关问题