完成端口通訊服務器(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
The end