SuperSocket入門--Telnet服務(wù)器和客戶端請求處理
本文的控制臺項目是根據(jù)SuperSocket官方Telnet示例代碼進(jìn)行調(diào)試的,官方示例代碼:Telnet示例。
開始我的第一個Telnet控制臺項目之旅:
創(chuàng)建控制臺項目:打開vs程序,文件=》新建=》項目
一、下載SuperSocket的動態(tài)庫,主要有兩種方式獲取SuperSocket的動態(tài)庫。
1、添加SuperSocket的dll文件(SuperSocket.Common.dll, SuperSocket.SocketBase.dll, SuperSocket.SocketEngine.dll)到此項目的引用,直接再官方網(wǎng)站上下載SuperSocket組件,引入需要dll文件即可:
2、通過 nuget來獲取,本人也比較喜歡這種方式,可以更新組件版本。(注意:我這里使用的是vs2015可以直接打開nuget,如果使用vs舊版本的同學(xué)需要下載nuget組件)
點擊瀏覽,輸入supersocket,勾選組件安裝即可
添加完成組件后需要注意將config文件進(jìn)行編譯成內(nèi)容,log4net需要使用config文件。
查看引入后的項目整體目錄,框紅線的為引入supersocket組件和文件
二、使用官方提供的啟動服務(wù)器的代碼進(jìn)行測試服務(wù)啟動和停止
/// <summary> /// SuperSocket服務(wù)啟動或停止 /// </summary> /// <param name="args"></param> static void Main(string[] args) { Console.WriteLine("請按任何鍵進(jìn)行啟動SuperSocket服務(wù)!"); Console.ReadKey(); Console.WriteLine(); var appServer = new AppServer(); //啟動應(yīng)用服務(wù)端口 if (!appServer.Setup(2017)) //啟動時監(jiān)聽端口2017 { Console.WriteLine("服務(wù)端口啟動失敗!"); Console.ReadKey(); return; } Console.WriteLine(); //嘗試啟動應(yīng)用服務(wù) if (!appServer.Start()) { Console.WriteLine("服務(wù)啟動失敗!"); Console.ReadKey(); return; } Console.WriteLine("服務(wù)啟動成功,請按'E'停止服務(wù)!"); while (Console.ReadKey().KeyChar != 'E') { Console.WriteLine(); continue; } //停止服務(wù) appServer.Stop(); Console.WriteLine("服務(wù)已停止!"); Console.ReadKey(); }
運行項目:
運行成功后可以查看Debug文件夾下的logs日志跟蹤文件,從日志里面,我們可以看到服務(wù)器已經(jīng)能啟動成功,但是這還沒有什么用,因為我們并沒有處理客戶的鏈接進(jìn)來,處理客戶的發(fā)送過來的信息。根據(jù)官方文檔,我們繼續(xù)拷貝代碼來完善我們的程序。
三、注冊客戶端鏈接和處理客戶端發(fā)送信息
1、處理客戶端連接,注冊回話新建事件處理方法
appServer.NewSessionConnected += new SessionHandler(appServer_NewSessionConnected);
2、在事件處理代碼中發(fā)送歡迎信息給客戶端
static void appServer_NewSessionConnected(AppSession session) { session.Send("Welcome to SuperSocket Telnet Server!"); }
3、使用Telnet客戶端進(jìn)行測試(注意:使用telnet必須先安裝telnet服務(wù))
安裝完成后,先運行telnet服務(wù)器
進(jìn)行運行win+r命令窗口cmd ,輸入telnet localhost 2017。(2017是開始程序中偵聽的端口)
回車,顯示歡迎語說明客戶端和服務(wù)器端進(jìn)行鏈接成功。
4、處理客戶端發(fā)送的信息,我繼續(xù)拷貝代碼
/// <summary> ///客戶端請求處理 /// </summary> /// <param name="session">會話</param> /// <param name="requestInfo">請求信息</param> static void appServer_NewRequestReceived(AppSession session, StringRequestInfo requestInfo) { switch (requestInfo.Key.ToUpper()) { case ("ECHO"): session.Send(requestInfo.Body); break; case ("ADD"): session.Send(requestInfo.Parameters.Select(p => Convert.ToInt32(p)).Sum().ToString()); break; case ("MULT"): var result = 1; foreach (var factor in requestInfo.Parameters.Select(p => Convert.ToInt32(p))) { result *= factor; } session.Send(result.ToString()); break; } }
客戶端發(fā)送請求處理
5、注冊請求事件
appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(appServer_NewRequestReceived);
運行效果:
除了使用telnet客戶端,網(wǎng)上還有一個tcp/udp的測試工具可以鏈接服務(wù)器
今天的supersocket框架的入門學(xué)習(xí)就到這里了,本人水平和文筆有限,有錯誤的地方歡迎大家指正!
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
C#實現(xiàn)Windows服務(wù)安裝卸載開啟停止
本文主要介紹了C#實現(xiàn)Windows服務(wù)安裝卸載開啟停止,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07WPF TextBox實現(xiàn)按字節(jié)長度限制輸入功能
這篇文章主要為大家詳細(xì)介紹了WPF TextBox實現(xiàn)按字節(jié)長度限制輸入功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11在.NET?WebService中跨域CORS問題的解決方案
在現(xiàn)代的Web應(yīng)用程序開發(fā)中,跨域資源共享(Cross-Origin?Resource?Sharing,?CORS)問題是開發(fā)者經(jīng)常遇到的一個挑戰(zhàn),在這篇博客中,我們將深入探討如何在?.NET?WebService?中解決CORS問題,幫助開發(fā)者順利實現(xiàn)跨域請求,需要的朋友可以參考下2024-05-05C#中哈希表(HashTable)用法實例詳解(添加/移除/判斷/遍歷/排序等)
這篇文章主要介紹了C#中哈希表(HashTable)用法,簡單講述了哈希表的原理并結(jié)合實例形式詳細(xì)分析了C#針對哈希表進(jìn)行添加、移除、判斷、遍歷、排序等操作的實現(xiàn)技巧,需要的朋友可以參考下2016-06-06