轉自http://blog.csdn.net/guestcode/article/details/4571636
完成端口通訊伺服器(IOCP Socket Server)設計
(六)功能強大的IOCP Socket Servre子產品例程源碼
Copyright © 2009 代碼客(盧益貴)版權所有
QQ:48092788 源碼部落格:http://blog.csdn.net/guestcode
本文論壇讨論:http://topic.csdn.net/u/20090921/11/69fe4623-0fd6-46df-9b6d-feaa8257beca.html
一、聲明
版權聲明:
1、通訊子產品代碼版權歸作者所有;
2、未經許可不得全部或部分用于任何項目開發;
3、未經許可不得部分修改後再利用源碼。
免責聲明:
1、由于設計缺陷或其它Bug造成的後果,作者不承擔責任;
2、未經許可的使用作者不提供任何技術支援服務。
權利和義務:
1、任何獲得源碼并發現Bug的個人或機關均有義務向作者反映;
2、作者保留追究侵權者法律責任的權利。
二、開發背景
部分代碼由前項目分離而來,尚未有應用考驗,但對于初學者學習和進階有很大幫助。性能上尚未有定論,但應該不會令你失望。
三、功能說明
1、可以關閉Socket的Buffer;
2、可以關閉MTU(不等待MTU滿才發送);
3、可以多IP或多端口監聽;
4、可以重用socket(主動關閉除外);
5、可以0緩沖接收(Socket的Buffe = 0時,避免過多的鎖定記憶體頁);
6、可以0緩沖連接配接(用戶端僅連接配接,不一定立即發資料);
7、可以條件編譯:
a、是否使用核心Singly-linked lists;
b、是否使用處理線程(工作線程和處理線程分開);
c、是否使用核心鎖來同步連結清單。
8、可以實作叢集伺服器模式的通訊(有用戶端socket);
9、可以單獨設定每個連接配接的Data項來實作連接配接和Usernfo的關聯;
10、每個線程有OnBegin和OnEnd,用于設定線程獨立的對象(資料庫會話對象);
11、可以提供詳細的運作情況,便于了解IOCP下的機制,以及進行調試分析;
12、可以發起巨量連接配接和資料(需要硬體配置來支援)。
四、缺陷
1、不支援UDP;
2、不帶通訊協定,無法處理粘包;
3、工作線程和處理線程隔離還不是很明确;
4、設計尚需再完善和優化。
五、通訊速率測試部分截圖
A機:單核桌上型電腦(服務端)
B機:雙核筆記本(用戶端)
網絡:本地100M路由
由于桌上型電腦太老,用盡CPU還是不能用完帶寬,是以改做伺服器,由筆記本做用戶端,發起密集資料,以堵塞的情況來滿負荷使用網絡,收發接近:10MB。
注意:由于測試條件太差,下面截圖不能說明任何權威結果。
伺服器端設定:
伺服器端運作資訊:
伺服器端CPU使用率:
用戶端設定:
用戶端運作資訊:
用戶端網絡使用率:
用戶端CPU使用率:
下載下傳連接配接:
http://d.download.csdn.net/down/1679785/guestcode