如何發現有多少個字節已發送到TCP套接字但尚未放在線路上?TCP發送隊列深度
綜觀圖這裏:
我想知道的總類別2,3和4或總的3和4這是在C(++)和在兩個Windows和Linux。理想情況下,我可以使用一個ioctl,但似乎沒有。
如何發現有多少個字節已發送到TCP套接字但尚未放在線路上?TCP發送隊列深度
綜觀圖這裏:
我想知道的總類別2,3和4或總的3和4這是在C(++)和在兩個Windows和Linux。理想情況下,我可以使用一個ioctl,但似乎沒有。
一些Unix口味可能有API方式來做到這一點,但沒有辦法做到這一點,可以跨不同的變種進行移植。
在Linux下,請參閱tcp(7)的手冊頁。
看來,您可以通過IOCTL(襪子,SIOCINQ獲得的未發射的字節數...
其他屬性可能是從由TCP_INFO的getsockopt()調用還給結構的成員。
如果你想確定是否要添加數據:不要擔心,發送將阻塞,直到數據在隊列中。如果你不想阻塞它,你可以告訴它發送(2):
send(socket, buf, buflen, MSG_DONTWAIT);
但這隻適用於Linux。
您還可以將插座設置爲非阻塞:
fcntl(socket, F_SETFD, O_NONBLOCK);
這樣寫會返回一個錯誤(EAGAIN)如果數據不能被寫入流。
你想表達什麼?也許有人可以幫助解決當前的問題。 – terminus 2008-09-19 21:23:37