如果一個C socket的recvmsg()有一個隊列,我怎麼知道有多少項目在隊列中積壓?在C中,對於套接字,recvmsg()是否有一個隊列?
我的問題是,我從recvmsg()收到的東西后,代碼的速度有時慢於發送到recvmsg()的數據的速度,這會在邏輯上導致隊列?如果隊列變得太大會發生什麼?
例如,如果這是我的recv()代碼:
while (recvmsg(SocketA,...) > 0)
{
...
...something that takes 1.5 seconds to execute/complete...
...
}
,如果下面的函數在其他地方被調用,每隔1秒鐘
// gets called every 1 second
int send_to_sock()
{
...
send(SocketA, ...);
...
}
我查recvmsg的參考頁( ),但他們中沒有一個提到有關隊列的任何內容,但似乎有一個隊列,因爲我觀察到遞增累加的延遲。但是,如果隊列變得太長,代碼將停止工作,所以我想知道是否有辦法檢查隊列的長度。
爲什麼你有'recv'的函數定義?通常情況下,'recv'是由OS定義的... –
套接字確實有緩衝區。如果這就是你所指的,這可能是有趣的:http://stackoverflow.com/questions/7865069/how-to-find-the-socket-buffer-size-of-linux –
我們,,數據是在你和同伴之間的空間和時間中展開。它在服務器,客戶端和中間路由器中排隊。它沿着海底光纖在地面站和衛星之間的自由空間中航行。有數據在那裏,但你不知道它在哪裏或多少。 – ThingyWotsit