UDP之间传送数据时,如果有一方是内网,
还能双方之间进行通讯吗?
我只知道内网能向外网的机器发送数据时,
只要向该机器的IP和软件监听的端口发送就OK了。
当外网对内网进行发送的时候,
不知道向对方的什么端口发送。
而听说QQ是用UDP传输的。它又是怎么能做到的呢?
即使双方都是内网。也能正常传输!

解决方案 »

  1.   

    如果内网先找外网,主动建立连接,就可以实现通信了;
    如果外网先找内网是找不到的,除非你在路由器上做了端口映射,就可以实现外网直接找内网了;
    QQ,是通过第三方服务告知实现的,每个内网的客户端登录时,先访问一个外网的固定服务(也就是qq的服务器),qq服务器告知双方彼此使用的端口,这样双方就可以通信了。
    路由器上网,是因为路由器做了nat转换,这样每一个内网计算机发出的信息,路由器会通过不同的端口来区分,这样路由器收到外网的数据包就可以根据数据包中的端口,来将数据转发到不通的电脑。
      

  2.   

    "qq服务器告知双方彼此使用的端口,这样双方就可以通信了。"
    这个应该很难实现吧?
    就算我说的这两个程序同时存在着TCP连接.
    可我还是不懂如何把内网的端口告诉外网的那台机器,
    如果懂得这个方法,就可能用UDP向内网的机器发送数据了.
    因为我要求的是速度,所以可以先建立TCP连接,
    要传送数据时只想用UDP.