SuperSocket入門(一)-Telnet伺服器和客戶端請求處理

来源:http://www.cnblogs.com/fly-bird/archive/2017/01/18/6298254.html
-Advertisement-
Play Games

本文的控制台項目是根據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框架的入門學習就到這裡了,本人水平和文筆有限,有錯誤的地方歡迎大家指正!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.結構:結構除了可以含有屬性和欄位,還可以包方法和構造器,但不能包含黠認(無參數}的構造器。有的時候(比如在實例化一個數組的時候)不會調用值類型的構造器,因為所有數組記憶體都轉為用零來初始化,為了避免因為預設構造器只是偶爾調用而造成不一致,C#完全禁止了用戶顯式定義預設構造器,因為編譯器會將聲明時的 ...
  • 接 上一篇 內容, 這裡先看一下錯誤處理過濾器. 在看此部分之前, 先看看MVC已經提供的功能吧. 一. MVC 自帶功能 1. 配置方法 這裡的mode預設是 Off , 就是會在頁面中直接顯示詳細的錯誤信息. 如果是 On, 則不會顯示詳細的錯誤信息, 顯示是這樣的: 在沒有配置具體 statu ...
  • 最近遇到的一個項目中用到了標題所說的方法,用Spring.Net將業務類封閉成WebService供其它地方調用使用,感覺還是蠻新鮮的,於是在園子中搜了一篇園友寫的文章(這裡)自己也嘗試著搭了一個環境,最後是順利跑了起來,但是中間遇到了幾個問題,這裡記錄一下。 具體的搭建方法不再贅述,上面的文章寫的 ...
  • ...
  • 前言 EF通過linq和各種擴展方法,再加上實體模型,編寫資料庫的訪問代碼確實是優美、舒服,但是生成的sql不盡如意、性能低下,尤其是複雜些的邏輯關係,最終大家還是會回歸自然,選擇能夠友好執行sql語句的ORM,認認真真的編寫sql;問題是:EF是否也能夠很友好的執行sql語句?EF提供直接執行sq ...
  • 背水一戰 Windows 10 之 控制項(導航類): Frame ...
  • 在ASP.NET MVC中,Ajax.BeginForm扮演著非同步提交的重要角色。其中就有五個重載方法,但是在實際應用中,你未必使用的得心應手,今天我們就從主要的參數來一探究竟。 一、actionName 用於指定請求地址的Action名稱。 二、controllerName 用於指定請求地址的Co ...
  • 任何一個和數據相關的系統里,數據持久化都是一個不容忽視的問題。 一直以來,Java 平臺出了很多 NB 的 ORM 框架,Hibernate、MyBatis等等。.NET 平臺上,ORM 框架這一塊一直沒有一個能吊到讓幾乎所有開發人員改掉以拼寫 SQL 語句訪問資料庫的習慣。 實際上,在 .NET ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...