SuperSocket入門--Telnet服務器和客戶端請求處理
本文的控制臺項目是根據(jù)SuperSocket官方Telnet示例代碼進行調試的,官方示例代碼: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舊版本的同學需要下載nuget組件)
點擊瀏覽,輸入supersocket,勾選組件安裝即可
添加完成組件后需要注意將config文件進行編譯成內容,log4net需要使用config文件。
查看引入后的項目整體目錄,框紅線的為引入supersocket組件和文件
二、使用官方提供的啟動服務器的代碼進行測試服務啟動和停止
/// <summary>
/// SuperSocket服務啟動或停止
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Console.WriteLine("請按任何鍵進行啟動SuperSocket服務!");
Console.ReadKey();
Console.WriteLine();
var appServer = new AppServer();
//啟動應用服務端口
if (!appServer.Setup(2017)) //啟動時監(jiān)聽端口2017
{
Console.WriteLine("服務端口啟動失敗!");
Console.ReadKey();
return;
}
Console.WriteLine();
//嘗試啟動應用服務
if (!appServer.Start())
{
Console.WriteLine("服務啟動失敗!");
Console.ReadKey();
return;
}
Console.WriteLine("服務啟動成功,請按'E'停止服務!");
while (Console.ReadKey().KeyChar != 'E')
{
Console.WriteLine();
continue;
}
//停止服務
appServer.Stop();
Console.WriteLine("服務已停止!");
Console.ReadKey();
}
運行項目:
運行成功后可以查看Debug文件夾下的logs日志跟蹤文件,從日志里面,我們可以看到服務器已經能啟動成功,但是這還沒有什么用,因為我們并沒有處理客戶的鏈接進來,處理客戶的發(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客戶端進行測試(注意:使用telnet必須先安裝telnet服務)
安裝完成后,先運行telnet服務器
進行運行win+r命令窗口cmd ,輸入telnet localhost 2017。(2017是開始程序中偵聽的端口)
回車,顯示歡迎語說明客戶端和服務器端進行鏈接成功。
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的測試工具可以鏈接服務器
今天的supersocket框架的入門學習就到這里了,本人水平和文筆有限,有錯誤的地方歡迎大家指正!
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持我們!
上一篇:C#遍歷文件夾及子目錄下所有圖片
欄 目:C#教程
本文標題:SuperSocket入門--Telnet服務器和客戶端請求處理
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5981.html
您可能感興趣的文章
- 01-10輕松學習C#的基礎入門
- 01-10dotNet中的反射用法入門教程
- 01-10C# WCF簡單入門圖文教程(VS2010版)
- 01-10詳解MongoDB for C#基礎入門
- 01-10C# 常用協(xié)議實現(xiàn)模版及FixedSizeReceiveFilter示例(SuperSocket入門)
- 01-10C#基礎入門之算法:交換
- 01-10C# 基礎入門--常量
- 01-10C# 基礎入門--變量
- 01-10C# 基礎入門--注釋
- 01-10C# 基礎入門--關鍵字


閱讀排行
本欄相關
- 01-10C#通過反射獲取當前工程中所有窗體并
- 01-10關于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
隨機閱讀
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實例總結
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設置


