SuperSocket伺服器架設(二):使用SuperSocket構建簡單伺服器
阿新 • • 發佈:2019-01-30
伺服器效果截圖:
客戶端效果截圖:
1. 建立控制檯專案,匯入SuperSocket.Common、SuperSocket.SocketBase、SuperSocket.SocketEngine並新增好引用
2. 在控制檯專案中新增Config資料夾及SuperSocket提供的log4net配置檔案
3. 新增using引用
[csharp] view plaincopyprint?- using SuperSocket.Common;
- using SuperSocket.SocketBase;
-
using
- using SuperSocket.SocketBase.Protocol;
4. Main方法新增程式碼:
[csharp] view plaincopyprint?- var appServer = new AppServer();
- //伺服器埠
- int port = 2000;
- //設定服務監聽埠
- if (!appServer.Setup(port))
- {
- Console.WriteLine("埠設定失敗!");
- Console.ReadKey();
-
return
- }
- //新連線事件
- appServer.NewSessionConnected += new SessionHandler<AppSession>(NewSessionConnected);
- //收到訊息事件
- appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(NewRequestReceived);
- //連線斷開事件
-
appServer.SessionClosed += new SessionHandler<AppSession, CloseReason>(SessionClosed);
- //啟動服務
- if (!appServer.Start())
- {
- Console.WriteLine("啟動服務失敗!");
- Console.ReadKey();
- return;
- }
- Console.WriteLine("啟動服務成功,輸入exit退出!");
- while (true)
- {
- var str = Console.ReadLine();
- if (str.ToLower().Equals("exit"))
- {
- break;
- }
- }
- Console.WriteLine();
- //停止服務
- appServer.Stop();
- Console.WriteLine("服務已停止,按任意鍵退出!");
- Console.ReadKey();
5. 新增事件對應方法
[csharp] view plaincopyprint?- staticvoid NewSessionConnected(AppSession session)
- {
- //向對應客戶端傳送資料
- session.Send("Hello User!");
- }
- staticvoid NewRequestReceived(AppSession session, StringRequestInfo requestInfo)
- {
- /**
- * requestInfo為客戶端傳送的指令,預設為命令列協議
- * 例:
- * 傳送 ping 127.0.0.1 -n 5
- * requestInfo.Key: "ping"
- * requestInfo.Body: "127.0.0.1 -n 5"
- * requestInfo.Parameters: ["127.0.0.1","-n","5"]
- **/
- switch (requestInfo.Key.ToUpper())
- {
- case ("HELLO"):
- session.Send("Hello World!");
- break;
- default:
- session.Send("未知的指令。");
- break;
- }
- }
- staticvoid SessionClosed(AppSession session, CloseReason reason)
- {
- }
6.備註:
(1).在SuperSocket.Base中,需要將引用中的log4net屬性做如下修改:
(2).客戶端可以使用 telnet 地址 埠連線: