本帖最后由 VisualEleven 于 2011-03-13 04:34:45 编辑

解决方案 »

  1.   

    这种属于A和B都在内网的情况,直接无法连通,最好通过一个具有公网ip的服务器来协调二者的通信,不然二者绝对无法通信。做端口映射的情况其实也是相当于通过了路由器的辅助。
    两种方案:
    1.所有的通信都通过服务器转发,就是二者直接的通信都通过服务器来中转,比如A发给B消息,就让A先把消息发给服务器,然后服务器再转发给B。
    2.NAT穿透技术。俗称TCP打洞或UDP打洞。大意是这样的,拿UDP穿透来说,A想要和B通信,但是A无法直接连接到B,所以A就向服务器请求,告诉服务器我要和B通信,这时候服务器告诉B,A要和你通信,于是B就在特定端口向A发起连接,由于之前A是在向B发送连接,所以双方相当于都打通了自己内网的端口,二者之间就可以通信了。这只是大意,具体的还有一些实际问题需要处理。
    详情请百度 UDP打洞。
    总之,没有服务器的协同,两个不同内网ip是无论如何都不能通信的,端口映射除外,端口映射也相当于有服务器的协同。
      

  2.   

    不知道QQ是怎么做到的。大家都在不同的网络里,但是消息能实时互发。
    更牛的是SKYPE(一种聊天软件),同一网段传文件时速度和局域网内传东西一样快。
      

  3.   

    1.在广域网有服务器,你们两者通过局域网的路由器共同访问这个服务器然后交换数据
    2.在广域网有服务器,你们两者通过局域网的路由器共同访问这个服务器然后打洞,成功后一方直接连接另一方通信
    3.双方的某个局域网的路由器开启DMZ映射,把自己影射到广域网,然后另一方直接通过对方广域网IP访问
    还有其它
    ...