WinSock重疊IO模型一

2021-07-10 05:31:28 字數 1260 閱讀 1425

winsock的重疊io模型也就是重疊io的乙個特例罷了。其實就是把套接字當成檔案來操作。在重疊io中,如果讀大檔案的時候,為了不在那裡幹等。告訴系統,我先去下兩盤象棋,你讀完了,告訴我一下。下棋時視窗是全屏的,讀完後,彈乙個對話方塊出來告訴我下吧。恩,下棋,真是浪費時間的事,得戒掉啊。

winsock中的重疊模型也是如此,告訴系統,有人發資料過來的時候通知我哈。我現在幹點別的事太無聊了。於是就可以耍了。但是,要讓系統通知你,你得把你**號碼給它吧,不讓有到時後它在那裡找你啊。下面就來看看在重疊模型中,是怎樣做這個準備工作的。

1、建立套接字,繫結,監聽,發現有客戶端接入,好了,現在有人和我下棋了。大戰三百回合,恩,才沒幾盤,對方要去吃飯,又不知道它吃快,吃慢,讓我幹等它吃飯,沒門,還是去找其他人和我下吧。但是他技術還不錯,讓他吃好後叫我吧,還沒把他殺過癮呢。於是告訴它來的時候,給我qq發過抖動視窗我就知道了。一邊把qq開在那裡等著,一邊和別人下。

2、過了好一會,qq聊天視窗抖動了,小丫的,終於來了。繼續我們的偉大事業吧。該重疊模型和上乙個wsaeventselect模型很類似,只是功能強點,也要難理解點。下面這個結構,就相當於實現qq聊天視窗抖動這一事件功能。

4、重疊io模型是我們在呼叫wsarecv等函式的時候,已經把接收資料的位址告訴給了系統,它返回時,已經把我們給它的包包填好了,而不像在wsaeventselect中,讓我們自己去讀。正因為前面都要我們在收到可以讀訊息的時候才去讀,而現在是訊息告訴我們我已經把剛到來的訊息資料讀出放在xx緩衝區中,你自己想怎們使用自己看作辦時還有點不習慣了。於是就要看看它究竟是怎們實現的呢。

//我們這裡設定為null

5、現在已經商量好了,就只有等待對方訊息過來了。

dword wsawaitformultipleevents(

dword cevents,                        // 等候事件的總數量

const wsaevent* lphevents,            // 事件陣列的指標

bool fwaitall, //當設定為 true,事件陣列中所有事件被傳信的時候函式才會返回

// false則任何乙個事件被傳信函式都要返回,此時設為false

dword dwtimeout,    // 超時時間,如果超時,函式會返回 wsa_wait_timeout

// 如果設定為0,函式會立即返回

bool falertable);   // 在完成例程中會用到這個引數,這裡我們先設定為false

上面是昨晚寫的,睡著了

電腦開了一晚上了,哈哈

WinSock重疊IO模型一

winsock的重疊io模型也就是重疊io的乙個特例罷了。其實就是把套接字當成檔案來操作。在重疊io中,如果讀大檔案的時候,為了不在那裡幹等。告訴系統,我先去下兩盤象棋,你讀完了,告訴我一下。下棋時視窗是全屏的,讀完後,彈乙個對話方塊出來告訴我下吧。恩,下棋,真是浪費時間的事,得戒掉啊。winsoc...

非同步通知I O模型和重疊I O模型

理解非同步通知i o模型 理解同步和非同步 同步i o的缺點及非同步方式的解決方案 理解非同步通知i o模型 實現非同步通知i o模型 wsaeventselect函式和通知 include intwsaeventselect socket s,wsaevent heventobject,long ...

Socket模型之重疊I O模型

socket模型之重疊i o模型 這幾天一直在看關於socket程式設計的幾種非同步程式設計,我覺得關於重疊i o模型的一些基本知識,我有必要記下來。在實際的程式設計過程中,我們需要按照下面幾步來編寫我們的socket重疊模型的程式 一 在伺服器端 1 首先初始化socket套接字。由於編寫非同步套...