VC 網路程式設計 WINSOCK I O模型

2021-06-27 09:25:03 字數 637 閱讀 6783

window 下的套接字以來兩種方式執行i/o操作,阻塞io 非阻塞io,一般預設使用的是阻塞io 即執行緒會等待不會把控制權利立刻返回給程式,這就意為乙個執行緒在某乙個時候只能夠去執行乙個io操作。如果服務端想和多個客戶端同時進行通訊的話就要使用多執行緒程式設計,但是會增加開銷,如果採用非阻塞io程式不會等待,會立刻返回結果但是在大部分情況下返回的結果是錯誤的,並返回乙個wsaewouldblock的錯誤,所以程式設計師要不斷的檢測函式返回的**以判斷乙個套接字何時可供讀寫,為了避免麻煩

select() 模型是winsock 中最常見的io模型,通過呼叫select函式可以確定乙個或者多個套接字的狀態,判斷套接字上是否存在資料,或者能否向乙個套接字寫入資料,它技能防止應用程式在套接字處於阻塞模式時候在一次io操作被阻塞,同時也防止套接字處於非鎖定模式中產生wsaewouldblock錯誤select函式原型、

int select(int nfds,fd_set* readfds,fd_set*writefds,fd_set* exceptfds,const struct timeeval*timeout)

nfds 是伯克利套接的相容,基本沒有作用,readfds writefds exceptfds 分別是可以讀的可以寫入的,發生異常的一組集合fd_set,在fd_set中會存在有一定數量的滿足條件的集合

VC 網路程式設計

服務端程式的編寫 1.建立套接字 socket 2.將套接字繫結到乙個本地位址和埠上.bind 3.將套接字設為監聽模式,準備接收客戶請求 listen 4.等待客戶請求到來,當請求到來後,接收連線請求,返回乙個新的對應於此次連線的套接字 accept 5.用返回的套接字和客戶端進行通訊 send ...

vc網路程式設計入門

對於許多初學者來說,網路通訊程式的開發,普遍的乙個現象就是覺得難以入手。許多概念,諸如 同步 sync 非同步 async 阻塞 block 非阻塞 unblock 等,初學者往往迷惑不清,只知其所以而不知起所以然。同步方式指的是傳送方不等接收方響應,便接著發下個資料報的通訊方式 而非同步指傳送方發...

VC 網路程式設計基礎

osi七層網路模型 物理硬體層 表示計算機網路中的物理裝置,常見的有計算機網絡卡等 資料鏈路層 將傳輸資料進行壓縮與解壓縮 網路層 將傳輸資料進行網路傳輸 資料傳輸層 進行資訊的網路傳輸 會話層 建立物理網路的連線 表示層 將傳輸資料以某種格式進行表示 應用層 應用程式介面 tcp ip實際上是乙個...