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的应用)

UDP包划分为IP分片时,如何在第一个UDP分片中填写UDP长度?

【udp】如何检测UDP端口的连通性

TCP和UDP的区别

TCP和UDP的区别

udp是啥意思 udp的含义是啥