天天看點

功能強大的IOCP Socket Server子產品源碼——完成端口通訊伺服器(IOCP Socket Server)設計(六)

轉自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。

注意:由于測試條件太差,下面截圖不能說明任何權威結果。

伺服器端設定:

功能強大的IOCP Socket Server子產品源碼——完成端口通訊伺服器(IOCP Socket Server)設計(六)

伺服器端運作資訊:

功能強大的IOCP Socket Server子產品源碼——完成端口通訊伺服器(IOCP Socket Server)設計(六)

伺服器端CPU使用率:

功能強大的IOCP Socket Server子產品源碼——完成端口通訊伺服器(IOCP Socket Server)設計(六)

用戶端設定:

功能強大的IOCP Socket Server子產品源碼——完成端口通訊伺服器(IOCP Socket Server)設計(六)

用戶端運作資訊:

功能強大的IOCP Socket Server子產品源碼——完成端口通訊伺服器(IOCP Socket Server)設計(六)

用戶端網絡使用率:

功能強大的IOCP Socket Server子產品源碼——完成端口通訊伺服器(IOCP Socket Server)設計(六)

用戶端CPU使用率:

功能強大的IOCP Socket Server子產品源碼——完成端口通訊伺服器(IOCP Socket Server)設計(六)

 下載下傳連接配接:

http://d.download.csdn.net/down/1679785/guestcode