delphi Winsock非阻塞模式詳解

來源:互聯網
上載者:User

標籤:class   c   http   com   檔案   art   

delphi Winsock非阻塞模式詳解
 
Winsockt的TClientSocket設定ClientType的屬性為ctNonBlocking.則通訊模式為非阻塞模式。 ctBlocking為阻塞模式,這裡說一下阻塞與非阻塞的一些區別。 ctBlocking模式當用戶端請求資料後,線程阻塞不繼續執行,直到服務端返回資料,用戶端將據需執行,並讀取資料。 然而阻塞模式的缺陷還是比較大的,經常會使程式死掉或者假死。當服務端發送較大的檔案時,阻塞模式基本廢掉了,由於資料緩衝較小,不能及時的擷取資料,阻塞模式將會認為資料發送完畢,會斷掉服務串連,導致資料傳送失敗。因此阻塞模式比較適用於網路通暢,並且資料量小的情況。   非阻塞模式當用戶端發送串連請求,及open之後,並不會執行之後的請求,就算有請求的資料也不會發送,而是會執行connect和write這兩個事件,中間應該還有connecting事件。connect是串連成功後的事件,write是準備發送請求的事件。我們所有的發送請求都會在write事件裡面執行。當我們在write事件中執行後,會調用read事件,在read事件中我們將會接受到服務端發送的資料,如果資料量比較大,則會一直調用read事件,直到資料發送完畢。非阻塞模式適合資料量較大的情況。   阻塞模式與非阻塞模式區別還是較大,但是根據我個人觀點,非阻塞模式相對與阻塞模式有更大的優勢,無論是效能,還是資料完整性方面的都較好。因此在我開發時也是使用非阻塞的模式     此為轉載內容,出處為:http://www.2cto.com/kf/201302/191918.html,只為學習需要,多有得罪

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.