我做了个程序.局域网之间的通信一般用ip地址如192.168.1.100 和192.168.1.101就可以实现2台机器的通信了.
但是如果把程序放到局域网外面怎么办啊? 是不是用路由器的ip地址+上自己的ip地址?

解决方案 »

  1.   

    c# 怎么获得自己的路由器ip加上电脑ip? 请问.谢谢
      

  2.   

    什么叫路由器指向?
    同个局域网使用IP就行  如果连接外网的话需要你目标公网IP
    其他不用 TCP连接就成
    你发送连接给目标主机 目标主机就能获取你公网的IP往回发送数据
    网关有防火墙或者策略限制除外
      

  3.   

    路由器有“NAT模式”和“路由模式”。路由模式:一般电信的网络用这种模式,实质就是IP寻址,多个路由器之间IP是不同的(公网IP),可以直接用IP寻址
    NAT模式:由于IP的数量有限,这个是减少IP使用量的一种方式,共享上网一般都是用这个
            假设,内网使用192.168.1.*这个网段,路由器的LAN端IP为192.168.1.1,WAN端IP为202.43.43.2(公网IP)
            内网中,你的机器IP为192.168.1.2,你同学192.168.1.3,假设你和他同时上qq(假设本地用3000端口),连接同一台qq服务器(4000端口)。如果是不作任何处理,qq服务器只知道IP为202.43.43.2:3000的机器要连它的4000端口,此时就不能区分到底是你的机器还是你同学的机器。
            在支持NAT的路由器中,则增加了一张NAT映射表,他会以某种算法将端口进行转换。如上例,你用QQ连接服务器的时候,你的机器使用3000端口,但路由器会使用3001去连接服务器,然后在表中加上一个对应关系如:192.168.1.2:3000-3001,同理你同学的也有可能这样192.168.1.3:3000-3002,这样一来,QQ服务器可以区分两个不同的服务了(机器),一个是202.43.43.2:3001,另一个是202.43.43.2:3002
           有了这个,就会导致内网机器是无法暴露在外网之中的,因为即使你机器监听了3000端口,外网去连3000端口也是徒劳的,NAT有转换规则,也许把3000转换到另一台机器另一个端口去了。但一般路由器都支持端口映射,例如将3000端口映射到192.168.1.2:3000,那么路由器会优先这个规则,从192.168.1.2:3000端口发送的数据全部用3000端口转发,而从3000端口接收到的数据也全部转发给192.168.1.2:3000对于这种路由,解决方法是假设中转服务器,一台暴露在公网中的服务器,如QQ服务器。
    具体怎么弄,我没深入研究。
      

  4.   

    lake_cx 都说的很清楚啊.厉害.