SuperSocket服务器架设(二):使用SuperSocket构建简单服务器

服务器效果截图:

 

客户端效果截图:

 

1.      创建控制台项目,导入SuperSocket.Common、SuperSocket.SocketBase、SuperSocket.SocketEngine并添加好引用


2.      在控制台项目中添加Config文件夹及SuperSocket提供的log4net配置文件


3.      添加using引用

[csharp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. using SuperSocket.Common;  
  2. using SuperSocket.SocketBase;  
  3. using SuperSocket.SocketEngine;  
  4. using SuperSocket.SocketBase.Protocol;  

4.      Main方法添加代码:

[csharp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. var appServer = new AppServer();  
  2.   
  3. //服务器端口  
  4. int port = 2000;  
  5.   
  6. //设置服务监听端口  
  7. if (!appServer.Setup(port))  
  8. {  
  9.     Console.WriteLine("端口设置失败!");  
  10.     Console.ReadKey();  
  11.     return;  
  12. }  
  13.   
  14. //新连接事件  
  15. appServer.NewSessionConnected += new SessionHandler<AppSession>(NewSessionConnected);  
  16.   
  17. //收到消息事件  
  18. appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(NewRequestReceived);  
  19.   
  20. //连接断开事件  
  21. appServer.SessionClosed += new SessionHandler<AppSession, CloseReason>(SessionClosed);  
  22.   
  23. //启动服务  
  24. if (!appServer.Start())  
  25. {  
  26.     Console.WriteLine("启动服务失败!");  
  27.     Console.ReadKey();  
  28.     return;  
  29. }  
  30.   
  31. Console.WriteLine("启动服务成功,输入exit退出!");  
  32.   
  33. while (true)  
  34. {  
  35.     var str = Console.ReadLine();  
  36.     if (str.ToLower().Equals("exit"))  
  37.     {  
  38.         break;  
  39.     }  
  40. }  
  41.   
  42. Console.WriteLine();  
  43.   
  44. //停止服务  
  45. appServer.Stop();  
  46.   
  47. Console.WriteLine("服务已停止,按任意键退出!");  
  48. Console.ReadKey();  

5.       添加事件对应方法

[csharp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. static void NewSessionConnected(AppSession session)  
  2. {  
  3.     //向对应客户端发送数据  
  4.     session.Send("Hello User!");  
  5. }  
  6.   
  7. static void NewRequestReceived(AppSession session, StringRequestInfo requestInfo)  
  8. {  
  9.     /** 
  10.      * requestInfo为客户端发送的指令,默认为命令行协议 
  11.      * 例: 
  12.      * 发送 ping 127.0.0.1 -n 5 
  13.      * requestInfo.Key: "ping" 
  14.      * requestInfo.Body: "127.0.0.1 -n 5" 
  15.      * requestInfo.Parameters: ["127.0.0.1","-n","5"] 
  16.      **/  
  17.     switch (requestInfo.Key.ToUpper())  
  18.     {  
  19.         case ("HELLO"):  
  20.             session.Send("Hello World!");  
  21.             break;  
  22.   
  23.         default:  
  24.             session.Send("未知的指令。");  
  25.             break;  
  26.     }  
  27. }  
  28.   
  29. static void SessionClosed(AppSession session, CloseReason reason)  
  30. {   
  31.       
  32. }  

6.备注:

         (1).在SuperSocket.Base中,需要将引用中的log4net属性做如下修改:

         

         (2).客户端可以使用 telnet 地址 端口连接:

        

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,但是你却可以使用 SuperSocket 很容易的开发出一款 Socket 服务器端软件,例如游戏服务器,GPS 服务器, 工业控制服务和数据采集服务器等等。 SuperSocket具有如下特点: 高性能的事件驱动通信; 非常简单易用; 你只需要通过创建几个类就能获得一个健壮的 Socket 服务器; 内置的命令行协议让你能够迅速创建一个网络命令行接口服务器; 强大且高性能的协议解析实现工具帮你简化了网络数据的分析工作; 灵活的配置功能和友好的配置 API; 多监听器支持; 让你在一个服务器实例内监听多个端口; 多服务器实例托管的支持让你从容面对复杂的部署需求; 应用程序域和进程级别的隔离能够满足你大部分的宿主场景; 内置的 SSL/TLS 加密支持; 会话级别的发送队列能够让你通过会话并发的发送数据,并保持高性能和可控性; SuperSocket 的命令处理模式让你的业务逻辑更清晰,更有条理; 优良的可扩展 API 支持: Command Filter, Connection Filter, Command Loader; 可替换的日志架构允许你使用你喜欢的日志组件; 动态语言的支持; 允许你用 Python 之类的脚本语言来实现命令; 与 Mono/Linux 保持进制级别的兼容; Windows Azure 的支持; 内置你可以直接用于 Flash 或 Silverlight 客户端的 Socket 策略服务器;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值