如何快速启动第一个程序

既然是快速入门,所以,对于太深奥的知识点将不做讲解,会在后续的高级应用章节中,会对SS进行拆解。所有的实例90%都是来自SS的实例,外加本人的注释进行讲解。

一般应用而言,你只需掌握五点就够了,如果SS内置的协议模板已经够用,你可以无视第5条。

  1. 如何配置AppServer的启动信息(如端口、字符编码等等。)
  2. 至少掌握一种启动SS的方式。
  3. 建立自己的应用服务器。
  4. 掌握命令和命令加载器。
  5. 掌握如何实现自定义协议

下面是一个简单启动SS的方法,并向请求的客户端发送欢迎词的例子,启动方式为通过代码进行启动,后续的代码中,启动代码将不会有注释。

  1. static void Main(string[] args)
  2. {
  3. // 定义一个默认的应用服务器(可以理解为定义了一个Socket),默认的应用服务器的协议是命令行协议(StringRequestInfo)
  4. var appServer = new AppServer();
  5. // 将监听端口设置为2012(当然这里还有其它配置,后续高级应用文章中,将会对SS进行拆解讲解)
  6. appServer.Setup();
  7. // 接收到新的客户端处理的方法,相当于Socket.Accept接收到一个客户端的连接将要做的事情。
  8. appServer.NewSessionConnected += new SessionHandler<AppSession>(appServer_NewSessionConnected);
  9. // 开始监听
  10. appServer.Start();
  11. while (Console.ReadKey().KeyChar != 'q')
  12. {
  13. Console.WriteLine();
  14. continue;
  15. }
  16. // 停止服务器。
  17. appServer.Stop();
  18. }
  19.  
  20. // 当收到一个会话连接请求的方法(AppSession封装了一个客户端Socket以及实现了发送消息等方法)
  21. static void appServer_NewSessionConnected(AppSession session)
  22. {
  23. // 这里收到请求后直接发送欢迎消息,如果这里传的是中文,如果在没有配置textEncoding的情况下,客户端收到的将会是乱码,很多小伙伴都在这里出错了,原因就是编码问题。后续会做讲解。
  24. session.Send("Welcome to SuperSocket Telnet Server");
  25. }

客户端就用Telnet吧,直接 "Win"+"R" 打开运行界面,输入"cmd",回车。出现DOS界面后输入"telnet 127.0.0.1 2012"即可,注意,win7默认是关闭telnet客户端的,需要到"控制面板"-"程序和功能"-"打开或关闭Windows功能"中,打开"telnet 客户端"功能即可使用。

当你键入"telnet 127.0.0.1 2012"的时候,会收到"Welcome to SuperSocket Telnet Server",表示成功。

加载配置文件快速启动程序

SS的配置是需要在应用程序配置app.config进行配置,将上面的例子变成配置文件如下:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <configSections>
  4. <section name="superSocket" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" />
  5. </configSections>
  6. <superSocket>
  7. <servers>
  8. <server name="TelnetServer"
  9. serverType="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"
  10. port="2012">
  11. </server>
  12. </servers>
  13. </superSocket>
  14. </configuration>

最重要的是要在<configSections>节点里面配置<section name="superSocket" ...... />,并在<configuration>中添加<superSocket>方法,否则无法正常启动程序!

关于配置文件的详细信息,点击查看官网

下面是具体的启动代码:

  1. static void Main(string[] args)
  2. {
  3. // 通过工厂创建一个加载器。
  4. var bootstrap = BootstrapFactory.CreateBootstrap();
  5. // 初始化加载器
  6. bootstrap.Initialize();
  7. // 启动程序
  8. bootstrap.Start();
  9. while (Console.ReadKey().KeyChar != 'q')
  10. {
  11. Console.WriteLine();
  12. continue;
  13. }
  14. // 停止服务器
  15. bootstrap.Stop();
  16. }

大家会问了,怎么上面代码中处理接收到新客户端的连接的方法怎么没有了?我要怎样处理呢?那就是下面一章我们要讲的,实现你的AppServer和AppSession。

SuperSocket快速入门(二):启动程序以及相关的配置的更多相关文章

  1. 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行

    用手工运行msoobe.ext启用配置的方法, 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行   我自己安装碰到的是蓝色这个错误,下面这个也有网友说用安装驱动等方法 ...

  2. SuperSocket快速入门(三):实现你的AppServer和AppSession

    什么是AppSession? AppSession 代表一个和客户端的逻辑连接,基于连接的操作应该定义于在该类之中.你可以用该类的实例发送数据到客户端,接收客户端发送的数据或者关闭连接.同时可以保存客 ...

  3. python3.5+django2.0快速入门(二)

    昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理. 配置数据库 我们打开mysite/mysite/settings.py这个文件. ...

  4. 我的第一个Socket程序-SuperSocket使用入门(二)

    操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操 辛辛苦苦写那么久的博客,最后手贱点了全屏富文本编辑器 ...

  5. 快速入门 WePY 小程序【转】

    一.WePY介绍 WePY 是 腾讯 参考了Vue 等框架对原生小程序进行再次封装的框架,更贴近于 MVVM 架构模式, 并支持ES6/7的一些新特性. 二.WePY 使用 1.WePY的安装或更新都 ...

  6. SuperSocket快速入门(一):什么是SuperSocket

    什么是SuperSocket SuperSocket(下文简称SS)是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Socket, 如何维护 ...

  7. PHP的cURL快速入门 (小偷采集程序)

    cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.很多小偷程序都是使用这个函数.   最爽的是,PHP也支持 cURL 库.本文将介绍 cUR ...

  8. Linux Bash Shell快速入门 (二)

    BASH 中的变量介绍BASH 中的变量都是不能含有保留字,不能含有 "-" 等保留字符,也不能含有空格. 简单变量在 BASH 中变量定义是不需要的,没有 "int i ...

  9. 005 Spark快速入门的简单程序案例

    参考:官网的quick start http://spark.apache.org/docs/1.6.0/quick-start.html 这里只是在shell命令行中简单的书写一些命令,做一个简单的 ...

随机推荐

  1. 关于cocopads 不能正确安装的问题

    通过几个网页 我搜到 看着几个网页就够了 绝对可以实现的 http://code4app.com/article/cocoapods-install-usage http://www.cnblogs. ...

  2. 【转】深入理解Java内存模型(五)——锁

    锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息. 下面是锁释放-获取的示例代 ...

  3. Java中如何判断当前环境是大端字节顺序还是小端字节顺序

    Java非字节类型的基本类型,除了布尔型都是由组合在一起的几个字节组成的.这些数据类 型及其大小总结在表 2-1 中. 表:基本数据类型及其大小 数据类型 大小(以字节表示) Byte 1 Char ...

  4. POP动画引擎中Layer与CALayer的一点区别

    POP动画引擎是facebook提供的一个开源框架, 可以实现很多的动画效果, 这里就不一一介绍啦, 有兴趣的童鞋请移步: https://github.com/facebook/pop 下面简单的讲 ...

  5. Eclipse自动生成文档注释

    /** *这种格式的注释就是文档注释 */ 快捷键是alt+shift+j,将光标放在类名,变量名,方法名上,按快捷键.

  6. 用dup2和dup产生一份file descriptor 的拷贝

    在类Unix操作系统里面,.dup2和dup都通过系统调用来产生一份file descriptor 的拷贝.   dup对我来说还很简单   int dup(int filedes);   dup2就 ...

  7. 50个PHOTOSHOP快捷键技能!

    一.常用的热键组合 1.图层混合模式快捷键:正常(Shift + Option + N),正片叠底(Shift + Option + M),滤色(Shift + Option + S),叠加(Shif ...

  8. java中gson的简单使用

    把从数据库中查询的记录以JSON格式返回给客户端,在这里使用gson-2.2.4.jar包. 代码结构如下: 数据库结构如下: (1)User.java public class User { pri ...

  9. 如何判断一个C++对象是否在堆上(通过GetProcessHeaps取得所有堆,然后与对象地址比较即可),附许多精彩评论

    在帖子如何判断一个C++对象是否在堆栈上 中, 又有人提出如何判断一个C++对象是否在堆上. 其实我们可以参照那个帖子的方法类似实现,我们知道堆就是Heap,在windows上我们可以通过GetPro ...

  10. HDOJ 1197 Specialized Four-Digit Numbers

    Problem Description Find and list all four-digit numbers in decimal notation that have the property ...