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