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时就应该允许丢包

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM