激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C# - SuperSocket入門(mén)--Telnet服務(wù)器和客戶端請(qǐng)求處理

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

2021-12-21 14:02黃昏前黎明后 C#

本文的控制臺(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入門(mén)--Telnet服務(wù)器和客戶端請(qǐ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文件即可:

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

2、通過(guò) nuget來(lái)獲取,本人也比較喜歡這種方式,可以更新組件版本。(注意:我這里使用的是vs2015可以直接打開(kāi)nuget,如果使用vs舊版本的同學(xué)需要下載nuget組件)

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

點(diǎn)擊瀏覽,輸入supersocket,勾選組件安裝即可

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

添加完成組件后需要注意將config文件進(jìn)行編譯成內(nèi)容,log4net需要使用config文件。

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

查看引入后的項(xiàng)目整體目錄,框紅線的為引入supersocket組件和文件

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

二、使用官方提供的啟動(dòng)服務(wù)器的代碼進(jìn)行測(cè)試服務(wù)啟動(dòng)和停止

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/// <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)目:

SuperSocket入門(mén)--Telnet服務(wù)器和客戶端請(qǐ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ā)送歡迎信息給客戶端

?
1
2
3
4
static void appserver_newsessionconnected(appsession session)
{
 session.send("welcome to supersocket telnet server!");
}

3、使用telnet客戶端進(jìn)行測(cè)試(注意:使用telnet必須先安裝telnet服務(wù))

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

安裝完成后,先運(yùn)行telnet服務(wù)器

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

進(jìn)行運(yùn)行win+r命令窗口cmd ,輸入telnet localhost 2017。(2017是開(kāi)始程序中偵聽(tīng)的端口)

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

回車(chē),顯示歡迎語(yǔ)說(shuō)明客戶端和服務(wù)器端進(jìn)行鏈接成功。 

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

4、處理客戶端發(fā)送的信息,我繼續(xù)拷貝代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/// <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)求事件

?
1
appserver.newrequestreceived += new requesthandler<appsession, stringrequestinfo>(appserver_newrequestreceived);

運(yùn)行效果:

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

除了使用telnet客戶端,網(wǎng)上還有一個(gè)tcp/udp的測(cè)試工具可以鏈接服務(wù)器

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

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

今天的supersocket框架的入門(mén)學(xué)習(xí)就到這里了,本人水平和文筆有限,有錯(cuò)誤的地方歡迎大家指正!

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

原文鏈接:http://www.cnblogs.com/fly-bird/p/6298254.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品免费观在线 | 久久精品国产99久久6动漫亮点 | 日本高清com | 天堂在线资源av | 国产精品久久久久久久久久大牛 | 婷婷一区二区三区 | 成人免费看视频 | 国产一区二区视频在线播放 | 激情亚洲一区二区 | 成年性羞羞视频免费观看无限 | 性欧美videos另类极品 | 羞羞的| 国产精品亚洲一区二区三区在线观看 | 成人毛片在线免费看 | 久久成人免费网 | 中国性xxx | 黄色的视频免费观看 | 日韩精品免费一区二区三区 | 视频一区二区中文字幕 | 午夜久久电影 | 亚洲欧洲av在线 | 成人做爰s片免费看网站 | 叶子楣成人爽a毛片免费啪啪 | 91精品久久久久久久久 | 韩国精品一区二区三区四区五区 | 美国一级黄色毛片 | 成人在线97| 亚欧美一区二区 | 久久美女色视频 | 国产精品久久久久久久久久久久午夜 | 成年人网站国产 | 久久久久免费精品国产小说色大师 | 精品69人人人人 | 国产一区网址 | 国产亚洲精品久久久久5区 99精品视频在线 | 夜夜夜影院 | arabxxxxvideos| 精品久久中文网址 | 国产一精品一av一免费爽爽 | 国产无遮挡一级毛片 | 国产伊人色 |