---------------------1 套接字物件----------------------
為每個套接字建立乙個socket_obj物件,記錄與之相關的資訊。
typedef struct_socket_objsocket_obj,*psocket_obj;
所有重疊io提交到特定的套接字上,釋放對應套接字物件,必須保證此套接字再沒有重疊io,即noutstandingops=0
申請套接字物件,釋放套接字物件的函式
psocket_obj getsocketobj(socket s)void
freesocketobj(psocket_obj psocket)
---------------------2 緩衝區物件---------------------
緩衝區物件socket_obj,記錄重疊io的所有屬性
typedef struct_buffer_objbuffer_obj,*pbuffer_obj;
pnext將buffer_obj物件練成乙個鍊錶
事件控制代碼陣列 和 鍊錶位址
handle g_events[wsa_maximum_wait_events];int g_nbuffercount;//
數量pbuffer_obj g_pbufferhead,g_pbuffertail;//
位址
呼叫重疊io函式之前,都要申請buffer_obj物件,記錄資訊。io完成後,再釋放buffer_obj物件
申請buffer_obj物件 的函式:
pbuffer_obj getbufferobj(psocket_obj psocket,ulong nlen)else
g_events[++g_nbuffercount] = pbuffer->ol.hevent;
}return
pbuffer;
}
釋放buffer_obj物件函式:
voidfreebufferobj(pbuffer_obj pbuffer)
else
}//釋放它占用的空間
if(bfind)
}
提交重疊io,傳遞引數有重疊結構io和緩衝區指標buff。在io完成後,得到的是受信事件物件的控制代碼。根據這個控制代碼找到對應的buffer_obj物件。
查詢buffer_obj物件的**:
pbuffer_obj findbufferobj(handle hevent)return
pbuffer;
}
更新時間控制代碼陣列g_events中的內容:
voidrebuildarray()
}
---------------------3 提交重疊io---------------------
投遞io之後,執行緒在重疊io事件上等待,一旦io事件物件受信,等待函式就會返回
提交接受連線的buffer_obj物件**:
bool postaccept(pbuffer_obj pbuffer)return
true;
}return
false;
};
接收資料的buffer_obj物件**:
bool postrecv(pbuffer_obj pbuffer)return
true;
}
傳送資料額buffer-obj物件**:
bool postsend(pbuffer_obj pbuffer)return
true;
}
---------------------4 主函式---------------------
隨筆 重疊I O模型的程式設計框架
include include include include include pragma comment lib,ws2 32.lib define default buflen 512 define default port 27015 int tmain 建立監聽套接字 if severso...
基於錯誤回顯的sql注入整理
由於複習,停了好幾天,今天換換模式做了一下關於錯誤回顯的ctf題目,首先附上題目 here 0x00 關於錯誤回顯 用我自己的話來講,基於錯誤回顯的sql注入就是通過sql語句的矛盾性來使資料被回顯到頁面上 當然在實際應用中得能回顯在頁面上,一般的 都回避免這種情況,哈哈,要是能碰上你就偷著樂吧 0...
乙個基於UDP的回顯C S 二
解決問題 通過connect,使伺服器端意外崩潰,重啟,客戶端能通過read函式而得知 伺服器端 vi s4.c include include include include include include include define serv port 9877 define maxline ...