是这样子的,有几台机子通过虚拟专用网络(PPTP)用同一个服务器连到外网,也就是说他们对外的ip都是一样的。
比如说,
        那个服务器的ip 为:202.115.20.x
       A机的本地ip:202.115.x.x(跟上边的不同)
       A机PPTP里的ip是自动获取的,为:202.0.0.x
现在要在A机(非服务器)上安装一个用于与外网通讯用的服务端,请问在socket编程里,语句
        listener = new TcpListener(ip,2000);
里的那个ip要设为哪一个呀?

解决方案 »

  1.   

    无需这么麻烦.
    IP用 IPAddress.Any这个属性.这样listener 就能侦听所有A机的IP,外网连接A机的时候可以根据实际情况选择相应IP连接
      

  2.   

    谢谢hopewoo(牛说了,我撅着,你对准我腚部偏下使劲吹气)
    这样的话,那客户端的
    connect(ip,2000)
    里的那个ip要怎么设呀?
      

  3.   

    这个的话,我没用过具体的PPTP网络.
    我只能用路由组成的内网来帮你分析:
    如果是路由的话,在这种情况下,必须开端口映射功能.就是把一个IP的端口,绑定到路由器的一个端口.不知道PPTP的服务器有没有这样的功能,如果有的话,那对外IP就是202.115.20.X,如果没有,这样无论哪个IP都是没有用的.
      

  4.   

    嗯,这里所有机子对外的ip都是202.115.20.x
    要怎么弄呀?
      

  5.   

    找了下 你仔细看看这篇文章.应该能解决你后面的问题http://hi.baidu.com/vtyname/blog/item/a03bba0164a88ed0277fb535.html
      

  6.   

    我没配置过Vnp,所以后面的就帮不了你了.
    推荐用关键字 VNP 映射 找
      

  7.   

    嗯,谢谢hopewoo(牛说了,我撅着,你对准我腚部偏下使劲吹气)
    你说的非常正确,我会记得结帐的。
    现在我知道要怎么弄了,只是那个,服务器不归我管,我知道了也没用。
    还有没有其他的办法呀?不用去弄服务器的。
      

  8.   

    呵呵.我再给你个建议.
    除非实现NAT穿透,否则恐怕无法实现了.
      

  9.   

            那个服务器的ip 为:202.115.20.x           -----server是你们的Gateway吗? 有几块网卡
          A机的本地ip:202.115.x.x(跟上边的不同)       ---------A机有几块网卡? 
          A机PPTP里的ip是自动获取的,为:202.0.0.x     你们的PPTP是拨号的VPN吗?
      

  10.   

    服务器的我不清楚,A机是单网卡的。不是拔号的。
    我再去看看NAT穿透。:)
      

  11.   

    NAT 打洞一般是P2P之间的UDP连接.而你要接收外网一个IP的TCP访问,你在你的机器上开 tcp listener = new TcpListener(IPAddress.Any,2000);的确就可以监听了,不管是内网的 202.115.x.y 的Tcp连接,还是PPTP外的202.0.0.y 的访问都可以接收.但是不一定能收到...但是重要的一点,外网如何能访问你呢?一般来说,你在NAT内部,你与外网的连接应该都是你发起的,也就是说,应该是你主动去连接外网的服务器,这样,NAT后就会把你的消息通过NAT翻译成一个外网IP及一个非固定的端口.服务器收到这个IP及端口后会回信,NAT在翻译回来给你.
      

  12.   

    嗯,我正在看NAT,挺有意思的,谢谢两位了。我现在先结了帐再去细看。
    呵呵,说实话,你们不说这个,我还不知道有这么一会事呢。
    再次谢谢!!!