在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  C  C++/ 關(guān)于linux c++ socket 接收緩沖區(qū)與發(fā)送緩沖區(qū)的疑惑

關(guān)于linux c++ socket 接收緩沖區(qū)與發(fā)送緩沖區(qū)的疑惑

1.客服端向服務(wù)端發(fā)送數(shù)據(jù)時,socket底層是不是會把對應(yīng)的客服端發(fā)送的數(shù)據(jù),存到對應(yīng)的socket對象的接收緩沖區(qū)中?我理解的對嗎?
2.客服端向服務(wù)端發(fā)送了200kb的數(shù)據(jù),服務(wù)端不接收這些數(shù)據(jù),而我想查看對應(yīng)的socket客服端接收緩沖區(qū),有多少數(shù)據(jù)沒有接收,對應(yīng)的socket對象的當(dāng)前接收緩沖區(qū),有多大,還有多少空間.
回答
編輯回答
舊言
  1. 調(diào)用send, 只是把用戶態(tài)的緩存拷貝到內(nèi)核的緩沖區(qū)去, 至于內(nèi)核有沒有發(fā)出去, 是不知道的.
  2. 你調(diào)用send的時候, 內(nèi)核已經(jīng)告訴你他接收了多少數(shù)據(jù), 剩下的數(shù)據(jù)是需要你保存的.
    至于內(nèi)核啥時候有空間讓你繼續(xù)寫, 這就需要多路復(fù)用, 比如poll/epoll, 有可以寫的空間了, 內(nèi)核會告訴你, 你這時候再去寫.
    至于查詢還有多大的緩沖區(qū), 我記得是可以的, 應(yīng)該是ioctl. 不過不推薦你這么寫程序, 這樣一次系統(tǒng)調(diào)用只會降低程序的性能.
2018年1月17日 02:43