delphi Winsock非阻塞模式详解
生活随笔
收集整理的這篇文章主要介紹了
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
轉載地址:http://www.2cto.com/kf/201302/191918.html
總結
以上是生活随笔為你收集整理的delphi Winsock非阻塞模式详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FFmpeg转码指令(测试通过)
- 下一篇: 阻塞、非阻塞