阻塞函式在完成其指定的任務以前不允許程式呼叫另乙個函式。例如,程式執行乙個讀資料的函式呼叫時,在
此函式完成讀操作以前將不會執行下一程式語句。當伺服器執行到accept語句時,而沒有客戶連線服務請求到
來,伺服器就會停止在accept語句上等待連線服務請求的到來。這種情況稱為阻塞(blocking)。而非阻塞
操作則可以立即完成。比如,如果你希望伺服器僅僅注意檢查是否有客戶在等待連線,有就接受連線,否則就
繼續做其他事情,則可以通過將socket設定為非阻塞方式來實現。非阻塞socket在沒有客戶在等待時就使
accept呼叫立即返回。
#include
#include
……
sockfd = socket(af_inet,sock_stream,0);
fcntl(sockfd,f_setfl,o_nonblock);
阻塞和非阻塞
在 windows 下的 socket 程式設計有兩個程式設計模型,阻塞和非阻塞。有時,他們也被叫做同步 阻 塞 和非同步 非阻塞 在 unix 中只支援阻塞模型。阻塞 indy 使用阻塞 socket 呼叫。阻塞呼叫很像乙個檔案的讀寫。當你讀資料或者寫資料時,直 到操作完成,函式才會返回。不同的是...
阻塞和非阻塞
在 windows 下的 socket 程式設計有兩個程式設計模型,阻塞和非阻塞。有時,他們也被叫做同步 阻 塞 和非同步 非阻塞 在 unix 中只支援阻塞模型。阻塞 indy 使用阻塞 socket 呼叫。阻塞呼叫很像乙個檔案的讀寫。當你讀資料或者寫資料時,直 到操作完成,函式才會返回。不同的是...
recv send 阻塞和非阻塞
在 阻塞模式 下,send函式的過程是將應用程式請求傳送的資料拷貝到傳送快取中傳送就返回.但由於傳送快取的存在,表現為 如果傳送快取大小比請求傳送的大小要大,那麼send函式立即返回,同時向網路中傳送資料 否則,send會等待接收端對之前傳送資料的確認,以便騰出快取空間容納新的待傳送資料,再返回 接...