读书人

udp收发文件,该如何处理

发布时间: 2012-09-17 12:06:51 作者: rapoo

udp收发文件
我先说明一下问题:(udpsocket 已绑定 端口,ip自己输入)
采用UDP协议传送文件时,当确定可以接受文件后,就是正式开始发送文件数据后。发送数据时,端口会不会改变。
就是,我先将socket绑定到8000端口,收发消息是可以从8000端口收发,一到传送文件数据时,端口就改变了,还是一个udp数据包大小的限制,就是说,我发送一个比它更大的数据包时,它自动分成几次发送,从而使第二次后的数据包自动分配端口进行发送。。。。。。。

[解决办法]
UDP只是目的端口不会变,源端口是自动选择的,除非你使用原始套接字固定源端口以及目的端口
[解决办法]
UDP fragments a packet when its total length exceeds the interface MTU (Maximum Transmission Unit). A more network friendly alternative is to use path MTU
discovery as described in the IP_MTU_DISCOVER section of ip(7).

UDP和TCP一样会分片,分片标准是MTU这个毫无疑问。

如果一个UDP报文的任意分片在传输中丢失,接收方无法拼接成完成的UDP报文就会丢弃。

你传一个几十K的图片,也就是远远超过了一般的以太网MTU,所以分片以及丢失都是很正常的。

端口问题,UDP无连接,端口只要绑定就可以随时接受任意remote向该端口发送而来的数据包。
[解决办法]
传输文件-》使用TCP吧
端口应该不会改变
[解决办法]
端口是由程序控制的,UDP传输文件的关键在于数据包能否可靠的到达。
[解决办法]
客户端的端口,在服务器端看来每次都是变的,除非人为地绑定好。。。。

读书人网 >C++

热点推荐