本帖最后由 yang3wei 于 2010-12-26 11:22:39 编辑

解决方案 »

  1.   

    网络传输文件,大小是关键,对于文本文件,可采用zip等方法压缩;图片也最好经过压缩处理,关于压缩可以参考下我的几篇博文,希望能有点帮助;至于udp打洞,这个就不太了解了。
      

  2.   

    UDP打洞可以看这里http://blog.csdn.net/hzb1983/archive/2009/07/17/4358272.aspx
      

  3.   

    或者这里http://blog.csdn.net/goxigo/archive/2008/05/22/2469209.aspx
      

  4.   


     你们都有公网IP地址吗? 否则你们只要有一方在路由器/防火墙/NAT之后的话,肯定是连接不上的。在这种情况下,必须用UDP打洞。原理和技术上面的文章都有了。至于UDP发送文件,显然是可以的。但是需要自己手工处理丢包重传,倒包修正等等问题。 因为UDP本来就是不可靠的。另外,网络包(不管是TCP还是UDP)都不会长的,你看到8Kb这是应用层,真正发送的时候,还要拆成MTU,Internet上的话,每个数据包大概在1Kb 多一点。
      

  5.   

    至于 UDP打洞, 这要从 IP协议说起,IP协议一开始没有想到后来有这么多东西连到网上,所以IP地址是 32位的。也就是说Internet上,最多只能连4G个设备(4亿多 ,但是还要预留一些做特殊用途,所以实际远没这么多。)但是,随着Internet的影响力越来越大,这个地址空间显然完全不够了。 于是有两个解决方案,1、很多设备共用一个IP地址。(这就是NAT的作用)。 2、采用IPv6,用128位地址。(但是目前还很遥远)但是这样一来,两个在NAT之后的设备,就没有办法互联了。于是发明了UDP打洞技术,通过一个中间服务器,利用NAT设备的一些特性,将两者联通起来。 而这,是P2P技术的基础。 由于有了UDP打洞,P2P才可能实现。
      

  6.   

    talentzxf兄台,您对这方面的了解真实深入啊!MTU我一点印象都没有啊,我有点小疑惑,底层那个1kb的会不会丢包啊?
    还有,用TCP传输的话不用考虑NAT这些东西么?即使两端都位于NAT中。。
    另外就是NAT有实实在在的设备专门去负责么
    而且我用的是校园网,我们学校有1~2万人,这个里面NAT是什么样的结构啊?还有,我上次听学校一个管网络的说,我们寝室用电脑下载AV、浏栏黄色网站的时候,他们都知道,吓我不小额,是不是真的啊?他们真有这么强大么?
      

  7.   

    正在编即时通讯软件。学习不少啊。穿透内网原来有UDP大洞这一说法。学习了!继续关注中,期待高手解答。
      

  8.   


    1. 底层显然会丢包,这个很正常,TCP协议保证了,丢包的话会重传。但是UDP没有这个保证
    2. NAT的话,可以在防火墙上做,也可以用路由器做。当然,最简单的方法,直接在Linux上用iptables命令就可以做的。 具体方法,自己Google iptables命令
    3. 你们学校的NAT结构,我怎么知道? 你说的这些,网管要是想知道当然能知道了,有各种各样的设备可以分析网络数据流的。
      

  9.   

    漏了个问题
    TCP的话,当然也要考虑NAT穿透啦! 但是TCP做NAT穿透比较麻烦,你可以上网搜索一下。
      

  10.   

    你好 我正在做关于udp协议的文件传输 可是做的不好 你可以给我参考吗 ??谢谢你了 我已经弄了很久 可是很着急 麻烦你能否帮忙下
      

  11.   

    不好意思啊,我也没有弄出最终实现,现在不搞java很久了,你得自己加力了,我也好久没进csdn的坛子了,随意现在才发现你的留言~