UDP传输文件总结1

  • Post author:
  • Post category:其他


这是一个课程作业,用udp协议做一个传输文件的小程序。

udp是不面向连接的协议,它在传文件上有它的优点:快,因为不需要握手应答之类的,缺点也很明显:不安全,容易丢包,掉序等。

我的开发分为三步:

1,实现最简单的报文传输文件功能:用二进制进行传文件,但大小不能超过1K,事实上应该不到1K,具体是多大我不记得了。这主要是由网络层在包达到一定大小时(mtu,好像是1500字节)就会切片,而切片后,会增加传输失败的几率,加之你的包很大,丢了后,即使只丢了一个包,也会导致传输失败。

2,对文件进行分片,然后再传输:一般一个片8-16字节传输的比较保险,但是这样其实效率是很低的,因为IP数据包头就至少有20字节。(在千兆局域网的条件下,做了个实验平均10万个包,丢那么几十个,大约万分之几的概率)在32字节以上时,基本上会传输失败。而且如果是传音乐、图片的话还好,我试着传了一个10M的rar,用了5分钟,而且有一些损坏,rar里面的部分文件不能看了。

3,具体编程方面有一些难点比如byte[]与String、int等的转换;String的判断相等最好别用==,而是用String.equal(),具体为什么不清楚,可能是String后面都会跟着一个/0。大概流程:用两个线程分别进行收、发操作;收在一个端口上进行监听,有包就收然后写到文件;在传输过程中࿰



版权声明:本文为lhyan792原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。