两个内网节点不能映射无法直接连通,想通过一个公网服务器,实现两个节点的TCP通信。
最后的结果就像两个点直接通信一样。能否在服务器上安装一个软件,实现信息转发。
QQ是p2P方式,可否有什么简单的、装个软件可以的方式。

解决方案 »

  1.   

    两个在不同NAT后面的机器是无法通过TCP直连的,只能通过UDP直连,前提就是服务器协调。协调协议是自定义的,所有没有通用的软件能做到这点,必须自己设计协议自己实现服务器。
      

  2.   

    想bnm77 老兄也在做网络NAT之类的编程,我最近正好也在做,把我知道的说一下
    A1和B1分别是2个不同内网中的2台机器,这两台电脑建立自己的UDP连接之后,一般向服务器的连接用一个UDP的socket,聊天或者文件传输或者video之类的,每样用一个UDP的socket。需要说明的是,A1对应外网的IP和端口是经过NAT的,IP肯定是A1网关(A)的,端口经过NAT后比如说是PA1Connect,PA1Chat等等,同样,针对B1也是,PB1Connect,PB1Chat等这样,反过来看,A1和B1针对外网的IP和端口都是经过NAT的,这样无论哪一边给另外一边都不能直接发消息,因为从网关来说,PA1Chat从来没有向PB1Chat发送过消息,这样从PB1Chat发送过来的消息直接被丢弃,A1服务器根本接收不到从PB1chat发送过来的消息,这样就必须做UDP连接,让PB1Chat先向PA1Chat发送一个消息,消息被PA1Chat丢弃,但是反过来,PB1Chat向PA1Chat发送过消息,这样PB1Chat就能接收到从PA1Chat发送过来的消息,这样来回发完之后,两边的UDP连接就建立成功了。记住,如果要做TCP连接,必须有一个在另外一个能直接联系到的地方,即网络地址没有经行过NAT,因为TCP必须Connect。
      

  3.   


    如果只是简单的转接一个TCP连接,写个小程序就可以实现。两个客户端分别连接服务器建立连接,服务器负责转发就可以了如果是多个连接,楼主又不想动手的话,装个VPN软件就可以了
    两台机器就像在同一个局域网内