SuperSocket入門--Telnet服務(wù)器和客戶端請(qǐng)求處理
本文的控制臺(tái)項(xiàng)目是根據(jù)SuperSocket官方Telnet示例代碼進(jìn)行調(diào)試的,官方示例代碼:Telnet示例。
開(kāi)始我的第一個(gè)Telnet控制臺(tái)項(xiàng)目之旅:
創(chuàng)建控制臺(tái)項(xiàng)目:打開(kāi)vs程序,文件=》新建=》項(xiàng)目
一、下載SuperSocket的動(dòng)態(tài)庫(kù),主要有兩種方式獲取SuperSocket的動(dòng)態(tài)庫(kù)。
1、添加SuperSocket的dll文件(SuperSocket.Common.dll, SuperSocket.SocketBase.dll, SuperSocket.SocketEngine.dll)到此項(xiàng)目的引用,直接再官方網(wǎng)站上下載SuperSocket組件,引入需要dll文件即可:
2、通過(guò) nuget來(lái)獲取,本人也比較喜歡這種方式,可以更新組件版本。(注意:我這里使用的是vs2015可以直接打開(kāi)nuget,如果使用vs舊版本的同學(xué)需要下載nuget組件)
點(diǎn)擊瀏覽,輸入supersocket,勾選組件安裝即可
添加完成組件后需要注意將config文件進(jìn)行編譯成內(nèi)容,log4net需要使用config文件。
查看引入后的項(xiàng)目整體目錄,框紅線的為引入supersocket組件和文件
二、使用官方提供的啟動(dòng)服務(wù)器的代碼進(jìn)行測(cè)試服務(wù)啟動(dòng)和停止
/// <summary> /// SuperSocket服務(wù)啟動(dòng)或停止 /// </summary> /// <param name="args"></param> static void Main(string[] args) { Console.WriteLine("請(qǐng)按任何鍵進(jìn)行啟動(dòng)SuperSocket服務(wù)!"); Console.ReadKey(); Console.WriteLine(); var appServer = new AppServer(); //啟動(dòng)應(yīng)用服務(wù)端口 if (!appServer.Setup(2017)) //啟動(dòng)時(shí)監(jiān)聽(tīng)端口2017 { Console.WriteLine("服務(wù)端口啟動(dòng)失敗!"); Console.ReadKey(); return; } Console.WriteLine(); //嘗試啟動(dòng)應(yīng)用服務(wù) if (!appServer.Start()) { Console.WriteLine("服務(wù)啟動(dòng)失敗!"); Console.ReadKey(); return; } Console.WriteLine("服務(wù)啟動(dòng)成功,請(qǐng)按'E'停止服務(wù)!"); while (Console.ReadKey().KeyChar != 'E') { Console.WriteLine(); continue; } //停止服務(wù) appServer.Stop(); Console.WriteLine("服務(wù)已停止!"); Console.ReadKey(); }
運(yùn)行項(xiàng)目:
運(yùn)行成功后可以查看Debug文件夾下的logs日志跟蹤文件,從日志里面,我們可以看到服務(wù)器已經(jīng)能啟動(dòng)成功,但是這還沒(méi)有什么用,因?yàn)槲覀儾](méi)有處理客戶的鏈接進(jìn)來(lái),處理客戶的發(fā)送過(guò)來(lái)的信息。根據(jù)官方文檔,我們繼續(xù)拷貝代碼來(lái)完善我們的程序。
三、注冊(cè)客戶端鏈接和處理客戶端發(fā)送信息
1、處理客戶端連接,注冊(cè)回話新建事件處理方法
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)行測(cè)試(注意:使用telnet必須先安裝telnet服務(wù))
安裝完成后,先運(yùn)行telnet服務(wù)器
進(jìn)行運(yùn)行win+r命令窗口cmd ,輸入telnet localhost 2017。(2017是開(kāi)始程序中偵聽(tīng)的端口)
回車,顯示歡迎語(yǔ)說(shuō)明客戶端和服務(wù)器端進(jìn)行鏈接成功。
4、處理客戶端發(fā)送的信息,我繼續(xù)拷貝代碼
/// <summary> ///客戶端請(qǐng)求處理 /// </summary> /// <param name="session">會(huì)話</param> /// <param name="requestInfo">請(qǐng)求信息</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ā)送請(qǐng)求處理
5、注冊(cè)請(qǐng)求事件
appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(appServer_NewRequestReceived);
運(yùn)行效果:
除了使用telnet客戶端,網(wǎng)上還有一個(gè)tcp/udp的測(cè)試工具可以鏈接服務(wù)器
今天的supersocket框架的入門學(xué)習(xí)就到這里了,本人水平和文筆有限,有錯(cuò)誤的地方歡迎大家指正!
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持我們!
上一篇:C#遍歷文件夾及子目錄下所有圖片
欄 目:C#教程
下一篇:C#使用正則表達(dá)式抓取網(wǎng)站信息示例
本文標(biāo)題:SuperSocket入門--Telnet服務(wù)器和客戶端請(qǐng)求處理
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5981.html
您可能感興趣的文章
- 01-10輕松學(xué)習(xí)C#的基礎(chǔ)入門
- 01-10dotNet中的反射用法入門教程
- 01-10C# WCF簡(jiǎn)單入門圖文教程(VS2010版)
- 01-10詳解MongoDB for C#基礎(chǔ)入門
- 01-10C# 常用協(xié)議實(shí)現(xiàn)模版及FixedSizeReceiveFilter示例(SuperSocket入門)
- 01-10C#基礎(chǔ)入門之算法:交換
- 01-10C# 基礎(chǔ)入門--常量
- 01-10C# 基礎(chǔ)入門--變量
- 01-10C# 基礎(chǔ)入門--注釋
- 01-10C# 基礎(chǔ)入門--關(guān)鍵字


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置