1. 程式人生 > >SuperSocket伺服器架設(二):使用SuperSocket構建簡單伺服器

SuperSocket伺服器架設(二):使用SuperSocket構建簡單伺服器

伺服器效果截圖:

 

客戶端效果截圖:

 

1.      建立控制檯專案,匯入SuperSocket.Common、SuperSocket.SocketBase、SuperSocket.SocketEngine並新增好引用


2.      在控制檯專案中新增Config資料夾及SuperSocket提供的log4net配置檔案


3.      新增using引用

[csharp] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. using SuperSocket.Common;  
  2. using SuperSocket.SocketBase;  
  3. using
     SuperSocket.SocketEngine;  
  4. using SuperSocket.SocketBase.Protocol;  

4.      Main方法新增程式碼:

[csharp] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. var appServer = new AppServer();  
  2. //伺服器埠
  3. int port = 2000;  
  4. //設定服務監聽埠
  5. if (!appServer.Setup(port))  
  6. {  
  7.     Console.WriteLine("埠設定失敗!");  
  8.     Console.ReadKey();  
  9.     return
    ;  
  10. }  
  11. //新連線事件
  12. appServer.NewSessionConnected += new SessionHandler<AppSession>(NewSessionConnected);  
  13. //收到訊息事件
  14. appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(NewRequestReceived);  
  15. //連線斷開事件
  16. appServer.SessionClosed += new SessionHandler<AppSession, CloseReason>(SessionClosed);  
  17. //啟動服務
  18. if (!appServer.Start())  
  19. {  
  20.     Console.WriteLine("啟動服務失敗!");  
  21.     Console.ReadKey();  
  22.     return;  
  23. }  
  24. Console.WriteLine("啟動服務成功,輸入exit退出!");  
  25. while (true)  
  26. {  
  27.     var str = Console.ReadLine();  
  28.     if (str.ToLower().Equals("exit"))  
  29.     {  
  30.         break;  
  31.     }  
  32. }  
  33. Console.WriteLine();  
  34. //停止服務
  35. appServer.Stop();  
  36. Console.WriteLine("服務已停止,按任意鍵退出!");  
  37. Console.ReadKey();  

5.       新增事件對應方法

[csharp] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. staticvoid NewSessionConnected(AppSession session)  
  2. {  
  3.     //向對應客戶端傳送資料
  4.     session.Send("Hello User!");  
  5. }  
  6. staticvoid NewRequestReceived(AppSession session, StringRequestInfo requestInfo)  
  7. {  
  8.     /** 
  9.      * requestInfo為客戶端傳送的指令,預設為命令列協議 
  10.      * 例: 
  11.      * 傳送 ping 127.0.0.1 -n 5 
  12.      * requestInfo.Key: "ping" 
  13.      * requestInfo.Body: "127.0.0.1 -n 5" 
  14.      * requestInfo.Parameters: ["127.0.0.1","-n","5"] 
  15.      **/
  16.     switch (requestInfo.Key.ToUpper())  
  17.     {  
  18.         case ("HELLO"):  
  19.             session.Send("Hello World!");  
  20.             break;  
  21.         default:  
  22.             session.Send("未知的指令。");  
  23.             break;  
  24.     }  
  25. }  
  26. staticvoid SessionClosed(AppSession session, CloseReason reason)  
  27. {   
  28. }  

6.備註:

         (1).在SuperSocket.Base中,需要將引用中的log4net屬性做如下修改:

         

         (2).客戶端可以使用 telnet 地址 埠連線: