欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SuperSocket入門(mén)--Telnet服務(wù)器和客戶端請(qǐng)求處理

 更新時(shí)間:2017年01月24日 10:10:30   作者:黃昏前黎明后  
本文的控制臺(tái)項(xiàng)目是根據(jù)SuperSocket官方Telnet示例代碼進(jìn)行調(diào)試的,官方示例代碼:Telnet示例。下面跟著小編一起來(lái)看下吧

本文的控制臺(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)的端口)

回車(chē),顯示歡迎語(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框架的入門(mén)學(xué)習(xí)就到這里了,本人水平和文筆有限,有錯(cuò)誤的地方歡迎大家指正!

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • C#實(shí)現(xiàn)Windows服務(wù)安裝卸載開(kāi)啟停止

    C#實(shí)現(xiàn)Windows服務(wù)安裝卸載開(kāi)啟停止

    本文主要介紹了C#實(shí)現(xiàn)Windows服務(wù)安裝卸載開(kāi)啟停止,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C#操作CSV文件類實(shí)例

    C#操作CSV文件類實(shí)例

    這篇文章主要介紹了C#操作CSV文件類,涉及C#針對(duì)csv文件的讀取、轉(zhuǎn)化等常用操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • WPF TextBox實(shí)現(xiàn)按字節(jié)長(zhǎng)度限制輸入功能

    WPF TextBox實(shí)現(xiàn)按字節(jié)長(zhǎng)度限制輸入功能

    這篇文章主要為大家詳細(xì)介紹了WPF TextBox實(shí)現(xiàn)按字節(jié)長(zhǎng)度限制輸入功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • C#給圖片添加水印完整實(shí)例

    C#給圖片添加水印完整實(shí)例

    這篇文章主要介紹了C#給圖片添加水印的方法,以完整實(shí)例形式分析了C#實(shí)現(xiàn)文字及圖像水印、縮略圖、圖片剪切等相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • Unity動(dòng)畫(huà)混合樹(shù)實(shí)例詳解

    Unity動(dòng)畫(huà)混合樹(shù)實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Unity動(dòng)畫(huà)混合樹(shù)實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 在.NET?WebService中跨域CORS問(wèn)題的解決方案

    在.NET?WebService中跨域CORS問(wèn)題的解決方案

    在現(xiàn)代的Web應(yīng)用程序開(kāi)發(fā)中,跨域資源共享(Cross-Origin?Resource?Sharing,?CORS)問(wèn)題是開(kāi)發(fā)者經(jīng)常遇到的一個(gè)挑戰(zhàn),在這篇博客中,我們將深入探討如何在?.NET?WebService?中解決CORS問(wèn)題,幫助開(kāi)發(fā)者順利實(shí)現(xiàn)跨域請(qǐng)求,需要的朋友可以參考下
    2024-05-05
  • C#中哈希表(HashTable)用法實(shí)例詳解(添加/移除/判斷/遍歷/排序等)

    C#中哈希表(HashTable)用法實(shí)例詳解(添加/移除/判斷/遍歷/排序等)

    這篇文章主要介紹了C#中哈希表(HashTable)用法,簡(jiǎn)單講述了哈希表的原理并結(jié)合實(shí)例形式詳細(xì)分析了C#針對(duì)哈希表進(jìn)行添加、移除、判斷、遍歷、排序等操作的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-06-06
  • 如何應(yīng)用C#實(shí)現(xiàn)UDP的分包組包

    如何應(yīng)用C#實(shí)現(xiàn)UDP的分包組包

    本篇文章小編將為大家介紹,如何應(yīng)用C#實(shí)現(xiàn)UDP的分包組包。需要的朋友參考下
    2013-04-04
  • C# LINQ的基本使用方法示例

    C# LINQ的基本使用方法示例

    這篇文章主要給大家介紹了關(guān)于C# LINQ的基本使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C# LINQ具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • C#中timer類的用法總結(jié)

    C#中timer類的用法總結(jié)

    System.Windows.Forms.Timer是應(yīng)用于WinForm中的,它是通過(guò)Windows消息機(jī)制實(shí)現(xiàn)的,類似于VB或Delphi中的Timer控件,內(nèi)部使用API SetTimer實(shí)現(xiàn)的。它的主要缺點(diǎn)是計(jì)時(shí)不精確,而且必須有消息循環(huán)
    2013-10-10

最新評(píng)論