SuperSocket快速入门(二):启动程序以及相关的配置
如何快速启动第一个程序
既然是快速入门,所以,对于太深奥的知识点将不做讲解,会在后续的高级应用章节中,会对SS进行拆解。所有的实例90%都是来自SS的实例,外加本人的注释进行讲解。
一般应用而言,你只需掌握五点就够了,如果SS内置的协议模板已经够用,你可以无视第5条。
- 如何配置AppServer的启动信息(如端口、字符编码等等。)
- 至少掌握一种启动SS的方式。
- 建立自己的应用服务器。
- 掌握命令和命令加载器。
- 掌握如何实现自定义协议
下面是一个简单启动SS的方法,并向请求的客户端发送欢迎词的例子,启动方式为通过代码进行启动,后续的代码中,启动代码将不会有注释。
static void Main(string[] args)
{
// 定义一个默认的应用服务器(可以理解为定义了一个Socket),默认的应用服务器的协议是命令行协议(StringRequestInfo)
var appServer = new AppServer();
// 将监听端口设置为2012(当然这里还有其它配置,后续高级应用文章中,将会对SS进行拆解讲解)
appServer.Setup();
// 接收到新的客户端处理的方法,相当于Socket.Accept接收到一个客户端的连接将要做的事情。
appServer.NewSessionConnected += new SessionHandler<AppSession>(appServer_NewSessionConnected);
// 开始监听
appServer.Start();
while (Console.ReadKey().KeyChar != 'q')
{
Console.WriteLine();
continue;
}
// 停止服务器。
appServer.Stop();
} // 当收到一个会话连接请求的方法(AppSession封装了一个客户端Socket以及实现了发送消息等方法)
static void appServer_NewSessionConnected(AppSession session)
{
// 这里收到请求后直接发送欢迎消息,如果这里传的是中文,如果在没有配置textEncoding的情况下,客户端收到的将会是乱码,很多小伙伴都在这里出错了,原因就是编码问题。后续会做讲解。
session.Send("Welcome to SuperSocket Telnet Server");
}
客户端就用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进行配置,将上面的例子变成配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="superSocket" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" />
</configSections>
<superSocket>
<servers>
<server name="TelnetServer"
serverType="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"
port="2012">
</server>
</servers>
</superSocket>
</configuration>
最重要的是要在<configSections>节点里面配置<section name="superSocket" ...... />,并在<configuration>中添加<superSocket>方法,否则无法正常启动程序!
关于配置文件的详细信息,点击查看官网
下面是具体的启动代码:
static void Main(string[] args)
{
// 通过工厂创建一个加载器。
var bootstrap = BootstrapFactory.CreateBootstrap();
// 初始化加载器
bootstrap.Initialize();
// 启动程序
bootstrap.Start();
while (Console.ReadKey().KeyChar != 'q')
{
Console.WriteLine();
continue;
}
// 停止服务器
bootstrap.Stop();
}
大家会问了,怎么上面代码中处理接收到新客户端的连接的方法怎么没有了?我要怎样处理呢?那就是下面一章我们要讲的,实现你的AppServer和AppSession。
SuperSocket快速入门(二):启动程序以及相关的配置的更多相关文章
- 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行
用手工运行msoobe.ext启用配置的方法, 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行 我自己安装碰到的是蓝色这个错误,下面这个也有网友说用安装驱动等方法 ...
- SuperSocket快速入门(三):实现你的AppServer和AppSession
什么是AppSession? AppSession 代表一个和客户端的逻辑连接,基于连接的操作应该定义于在该类之中.你可以用该类的实例发送数据到客户端,接收客户端发送的数据或者关闭连接.同时可以保存客 ...
- python3.5+django2.0快速入门(二)
昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理. 配置数据库 我们打开mysite/mysite/settings.py这个文件. ...
- 我的第一个Socket程序-SuperSocket使用入门(二)
操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操操 辛辛苦苦写那么久的博客,最后手贱点了全屏富文本编辑器 ...
- 快速入门 WePY 小程序【转】
一.WePY介绍 WePY 是 腾讯 参考了Vue 等框架对原生小程序进行再次封装的框架,更贴近于 MVVM 架构模式, 并支持ES6/7的一些新特性. 二.WePY 使用 1.WePY的安装或更新都 ...
- SuperSocket快速入门(一):什么是SuperSocket
什么是SuperSocket SuperSocket(下文简称SS)是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Socket, 如何维护 ...
- PHP的cURL快速入门 (小偷采集程序)
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.很多小偷程序都是使用这个函数. 最爽的是,PHP也支持 cURL 库.本文将介绍 cUR ...
- Linux Bash Shell快速入门 (二)
BASH 中的变量介绍BASH 中的变量都是不能含有保留字,不能含有 "-" 等保留字符,也不能含有空格. 简单变量在 BASH 中变量定义是不需要的,没有 "int i ...
- 005 Spark快速入门的简单程序案例
参考:官网的quick start http://spark.apache.org/docs/1.6.0/quick-start.html 这里只是在shell命令行中简单的书写一些命令,做一个简单的 ...
随机推荐
- iOS8中添加的extensions总结(三)——图片编辑扩展
图片编辑扩展 注:此教程来源于http://www.raywenderlich.com的<iOS8 by Tutorials> 1.准备 与(二)类似的使用Imgur作为图片来源 2. ...
- Xcode 运行报错:“Your build settings specify a provisioning profile with the UUID ****** however, no such provisioning profile was found”
iOS开发中遇到"Your build settings specify a provisioning profile with the UUID ****** however, no su ...
- php魔法常量
有七个魔术常量它们的值随着它们在代码中的位置改变而改变.例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定.这些特殊的常量不区分大小写,如下: 名称 说明 __LINE__ 文件中的当前行号 ...
- 武汉科技大学ACM :1010: 零起点学算法103——一只小蜜蜂...
Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示. Input 输入数据的第一 ...
- 多线程11-Semaphore信号灯
1.概念 Semaphore可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数 2.案例 package org ...
- MySQL索引和锁
索引和锁可以让查询锁定更少的行.如果你的查询从不访问那些不需要访问的行,那么就会锁定更少的行,从两个方面来看这对性能都有好处.首先,虽然innodb的行锁效率很高,内存使用也很少,但是锁定行的时候仍然 ...
- jquery mobile将页面内容当成弹框进行显示
注:必须使用相对应版本的jquery mobile css.不然无法正常显示 <div data-role="page" id="pageone"> ...
- jq仿虾米网flash效果
这是很久以前写的一个效果了,之前虾米音乐网首页的一个flash效果,最初觉得这flash效果也可以完全用jq来写,于是空余时间就写了下当作练习吧,现在就拿出来跟大家分享下其中的实现原理! 先上最终效果 ...
- phpCMS V9 自定义添加 全局变量{SKIN_PATH}方法
前言:目前v9版本新增{js_path},{css_path},{img_path}三个全局变量,代替2008版本中{skin_path},样式图片脚本分开路径,确实达到了一定在后台管理方便的目的,但 ...
- phpcms v9教程 联动搜索在房地产网站开发中的应用
开发简述:使用phpcms v9系统,修改源文件5个,创建模型:楼盘.出售.出租.中介.小区,增加联动菜单:楼盘,增加用户组:房产中介.实现功能:游客发布信息.会员申请中介.楼盘全方位展示.报名团购. ...