[英]Callbacks using asynchronous sockets
我的問題很簡單,它涉及使用TCP協議的異步套接字。
當我使用“ BeginSend”方法發送一些數據時,何時調用回調?
當數據剛剛發送到網絡時,或者當我們確保數據到達其目的地時(如它應該與TCP規范有關),會調用它嗎?
感謝您的回答。
風箏。
ps:對不起,我的英語不好一點^^。
從MSDN:
“當您的應用程序調用BeginSend時,系統將使用一個單獨的線程來執行指定的回調方法,並將在EndSend上阻塞,直到Socket發送請求的字節數或引發異常為止。”
“成功完成發送並不表示數據已成功傳遞。如果傳輸系統中沒有可用的緩沖區空間來保存要發送的數據,則除非套接字已置於非阻塞模式,否則發送將阻塞。”
調用回調時,可以確保已從輸出緩沖區中清除了數據(異步操作使用單獨的線程來確保在傳輸緩沖區中沒有空間的情況下不會阻塞您的調用線程,並且必須等待發送的日期),它會到達它的目的地-但並不表明它已經達到了它。
但是,由於TCP協議的性質,您可以確定(嗯,我想幾乎可以肯定)它最終會到達目的地。
但是,出於計時目的,您不應將回調時間與數據到達另一方的時間相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.