Udp -内部缓冲区
Posted QianweiZ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Udp -内部缓冲区相关的知识,希望对你有一定的参考价值。
1.每个socket关联了两个缓冲区,一个用于发送,一个用于接收。
2.
3.发送:(1)sendto()把数据放在sendbuf(缓冲区),通知os来取
(2)os在适当的时候过来取数据,并发到网络
这意味着:存入数据和发送数据存在时间差(异步的),如果存入数据太快太多,缓冲区会满
4. 接收:(1)os不停吧从网络上接收数据,缓存在recvbuf里
(2)recvfrom从缓存区里接收数据
这意味着:不论你是否去取数据,os总是把数据收下来存好,recfrom是从recvbuf里取走现成的数据,如果不及时取走。则缓冲区满
小结:发送和接收是一个异步过程
缓冲区满的处理:
发送:
1)知道缓冲区有剩余空间(阻塞)
2)新发送的数据没有存入缓冲区(直接丢掉)
接收:
1)新的数据不被接收
2)删除缓冲区里的现有的数据,存放新的数据。
丢包对UDP来说是很正常,在使用UDP时就应该允许丢包
以上是关于Udp -内部缓冲区的主要内容,如果未能解决你的问题,请参考以下文章
UDP协议详解(UDP协议特点,UDP协议格式UDP的应用)