原文地址 http://blog.csdn.net/SQLDebug_Fan/article/details/17556353sql
例子主要包括SocketAsyncEventArgs通信封裝、服務端實現日誌查看、SCOKET列表、上傳、下載、遠程文件流、吞吐量協議,用於測試SocketAsyncEventArgs的性能和壓力,最大鏈接數支持65535個長鏈接,最高命令交互速度達到250MB/S(使用的是127.0.0.1的方式,至關於千兆網卡1Gb=125MB/S兩倍的吞吐量)。服務端用C#編寫,並使用log4net做爲日誌模塊;客戶端使用DELPHI編寫,和之前的DELPHI版完成端口共用一個客戶端,提供C#版的上傳客戶端。編程
C#版完成端口具備如下特色:服務器
由不一樣的類負責實現,比MSDN的例子代碼多了很多邏輯,爲了方便你們閱讀和理解,把總體類框架設計總體以下。網絡
類結構圖併發
服務端框架
服務端是一個控制檯程序,支持分顏色顯示日誌,界面截圖以下:分佈式
客戶端oop
用於對服務端進行性能測試,實現了吞吐量測試協議,還有日誌、查看客戶端、上傳、下載、遠程文件流五個應用層協議,能夠做爲要實現其餘協議的例子參考,其中遠程文件流能夠做爲分佈式系統的底層數據交互模塊,界面截圖以下:性能
暫不提供NET的客戶端,NET的界面編程還在學習中,很是抱歉。學習
性能測試結果
支持65535個長鏈接,爲了支持65535個鏈接,須要把程序用64位進行編譯。
循環發包網絡流量能夠達到250MB/S,受限因而網卡流量,千兆網卡最大1Gb=125MB/S,爲了測試最大吞吐量,咱們須要把客戶端和服務器放在同一臺電腦上,使用127.0.0.1這個IP測試,127.0.0.1是本機回送地址(Loopback Address),即主機IP堆棧內部的IP地址,主要用於網絡軟件測試以及本地機進程間通訊,不管什麼程序,一旦使用回送地址發送數據,協議軟件當即返回,不進行任何網絡傳輸。
其中截圖以下:
按文件上傳下載對服務器進行應用層速率測試,分爲一、1六、6四、256個併發進行測試,發包大小分一、二、四、八、1六、3二、6四、12八、25六、5十二、1024KB,測試結果彙總以下,其中最高速率達到250MB/S,綜合最優發包大小爲1六、32KB,其中速率計算有可能存在誤差,由於傳到最後,併發數會變小,形成整個的速率上升,能夠做爲性能測試的參考。
DEMO下載地址:http://download.csdn.net/detail/sqldebug_fan/7467745