2011-08-10 27 views
0

我相信知道在非阻塞模式下調用發送或WSASend只是在內部緩衝區中添加數據,但是如何知道數據何時發送?我的目標是顯示一個進度條。知道數據何時發送

+0

在我的回答(我刪除)中,我沒有正確解釋你想要的東西。這也可能不是,所以這只是一個評論。使用非阻塞套接字,我相信如果發送緩衝區已滿,您將從發送調用中獲得WSAEWOUDBLOCK。如果發送返回值小於給定總數,則需要使用剩餘數據再次呼叫發送。因此,例如,如果您的發送緩衝區設置爲128K,那麼您可以測量您正在製作的進度並從中生成進度欄信息。 –

+0

我試過但改變發送緩衝區大小不正常,我跟着這個鏈接:http://stackoverflow.com/questions/3145871/calculating-socket-upload-speed它的工作原理!謝謝 ! – Triton

+0

「發送」是什麼意思?如果你的智能卡有自己的緩衝功能,那麼你可以指望操作系統將數據傳遞給網卡的時刻,還是數據碰到線路的時刻?事情變得更棘手,像VMware – MSalters

回答

0

您可以嘗試Boost.Asio(如果您可以更改)。它可以執行異步或同步發送和接收。異步發送時,可以註冊發送完成時將調用的函數。

+0

謝謝,但我必須直接使用winsock。 – Triton

相關問題