本文的控制台項目是根據SuperSocket官方Telnet示例代碼進行調試的,官方示例代碼:Telnet示例。 開始我的第一個Telnet控制台項目之旅: 創建控制台項目:打開vs程式,文件=》新建=》項目 一、下載SuperSocket的動態庫,主要有兩種方式獲取SuperSocket的動態庫。 ...
本文的控制台項目是根據SuperSocket官方Telnet示例代碼進行調試的,官方示例代碼:Telnet示例。
開始我的第一個Telnet控制台項目之旅:
創建控制台項目:打開vs程式,文件=》新建=》項目
一、下載SuperSocket的動態庫,主要有兩種方式獲取SuperSocket的動態庫。
1、添加SuperSocket的dll文件(SuperSocket.Common.dll, SuperSocket.SocketBase.dll, SuperSocket.SocketEngine.dll)到此項目的引用,直接再官方網站上下載SuperSocket組件,引入需要dll文件即可:
2、通過 nuget來獲取,本人也比較喜歡這種方式,可以更新組件版本。(註意:我這裡使用的是vs2015可以直接打開nuget,如果使用vs舊版本的同學需要下載nuget組件)
點擊瀏覽,輸入supersocket,勾選組件安裝即可
添加完成組件後需要註意將config文件進行編譯成內容,log4net需要使用config文件。
查看引入後的項目整體目錄,框紅線的為引入supersocket組件和文件
二、使用官方提供的啟動伺服器的代碼進行測試服務啟動和停止
1 /// <summary> 2 /// SuperSocket服務啟動或停止 3 /// </summary> 4 /// <param name="args"></param> 5 static void Main(string[] args) 6 { 7 Console.WriteLine("請按任何鍵進行啟動SuperSocket服務!"); 8 9 Console.ReadKey(); 10 Console.WriteLine(); 11 12 var appServer = new AppServer(); 13 14 //啟動應用服務埠 15 if (!appServer.Setup(2017)) //啟動時監聽埠2017 16 { 17 Console.WriteLine("服務埠啟動失敗!"); 18 Console.ReadKey(); 19 return; 20 } 21 22 Console.WriteLine(); 23 24 //嘗試啟動應用服務 25 if (!appServer.Start()) 26 { 27 Console.WriteLine("服務啟動失敗!"); 28 Console.ReadKey(); 29 return; 30 } 31 32 Console.WriteLine("服務啟動成功,請按'E'停止服務!"); 33 34 while (Console.ReadKey().KeyChar != 'E') 35 { 36 Console.WriteLine(); 37 continue; 38 } 39 40 //停止服務 41 appServer.Stop(); 42 43 Console.WriteLine("服務已停止!"); 44 Console.ReadKey(); 45 }telnet服務啟動和關閉
運行項目:
運行成功後可以查看Debug文件夾下的logs日誌跟蹤文件,從日誌裡面,我們可以看到伺服器已經能啟動成功,但是這還沒有什麼用,因為我們並沒有處理客戶的鏈接進來,處理客戶的發送過來的信息。根據官方文檔,我們繼續拷貝代碼來完善我們的程式。
三、註冊客戶端鏈接和處理客戶端發送信息
1、處理客戶端連接,註冊回話新建事件處理方法
appServer.NewSessionConnected += new SessionHandler(appServer_NewSessionConnected);
2、在事件處理代碼中發送歡迎信息給客戶端
static void appServer_NewSessionConnected(AppSession session)
{
session.Send("Welcome to SuperSocket Telnet Server!");
}
3、使用Telnet客戶端進行測試(註意:使用telnet必須先安裝telnet服務)
安裝完成後,先運行telnet伺服器
進行運行win+r命令視窗cmd ,輸入telnet localhost 2017。(2017是開始程式中偵聽的埠)
回車,顯示歡迎語說明客戶端和伺服器端進行鏈接成功。
4、處理客戶端發送的信息,我繼續拷貝代碼
1 /// <summary> 2 ///客戶端請求處理 3 /// </summary> 4 /// <param name="session">會話</param> 5 /// <param name="requestInfo">請求信息</param> 6 7 static void appServer_NewRequestReceived(AppSession session, StringRequestInfo requestInfo) 8 { 9 switch (requestInfo.Key.ToUpper()) 10 { 11 case ("ECHO"): 12 session.Send(requestInfo.Body); 13 break; 14 15 case ("ADD"): 16 session.Send(requestInfo.Parameters.Select(p => Convert.ToInt32(p)).Sum().ToString()); 17 break; 18 19 case ("MULT"): 20 21 var result = 1; 22 23 foreach (var factor in requestInfo.Parameters.Select(p => Convert.ToInt32(p))) 24 { 25 result *= factor; 26 } 27 28 session.Send(result.ToString()); 29 break; 30 } 31 }客戶端發送請求處理
5、註冊請求事件
1 appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(appServer_NewRequestReceived);註冊客戶端請求事件
運行效果:
除了使用telnet客戶端,網上還有一個tcp/udp的測試工具可以鏈接伺服器
今天的supersocket框架的入門學習就到這裡了,本人水平和文筆有限,有錯誤的地方歡迎大家指正!