App.config内容


 
 <configSections>
<section name="superSocket"
type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" />
</configSections>   <superSocket>
<servers>
<server name="B_STMP_Server" textEncoding="gb2312" serverType="B_STMP_Server.RTU.RTUServer, B_STMP_Server" ip="Any" port="2020" maxConnectionNumber="100">
</server>
</servers>
</superSocket>
要点:serverType="B_STMP_Server.RTU.RTUServer, B_STMP_Server" 
逗号 前面的  B_STMP_Server.RTU.RTUServer 是 自定义 appserver 的类型的全名
逗号 后面的 不知道什么意思(此处不求甚解了)参考的官方的文档就是这么写的,
B_STMP_Server不行的话 就换成 B_STM_Server.RTU

App.config中的配置正确之后 还是会 Bootstrap.Initialize 失败

后来经过反复排查 得出以下结果
public RTUServer(): base(new DefaultReceiveFilterFactory<RTUReceiveFileter, RTUReqInfo>()) //使用默认的接受过滤器工厂 (DefaultReceiveFilterFactory)
{
this.NewSessionConnected += new SessionHandler<RTUSession>(_RTUServer_NewSessionConnected);
this.NewRequestReceived += new RequestHandler<RTUSession, RTUReqInfo>(_RTUServer_NewRequestReceived);
this.SessionClosed += new SessionHandler<RTUSession, CloseReason>(_RTUServer_SessionClosed); LogHelper.Info("RTUServer Started");
}

  

如果 把

LogHelper.Info("RTUServer Started");

换成 

console.write("RTUServer Started");

Bootstrap 就会初始化 失败  原因不明 但能隐约猜到

如果不用 Bootstrap 启动 Server,而是在代码中调用 Server的start方法来启动server的话。

即使在Server的构造方法里面 写上
console.write("RTUServer Started");

服务照样能启动,并且 控制台 也能 正常打印出 RTUServer Started

另外 之前一直纠结了很久 的如何 在使用 Bootstrap 启动Server 的同时 也能指定服务器对象的 各种回调函数 (委托) 这个问题

其实很简单,回调函数不仅可以使用某一个对象的属性来添加,也可以直接在类的构造方法中直接添加。 

如下:
this.NewSessionConnected += new SessionHandler<RTUSession>(_RTUServer_NewSessionConnected);
this.NewRequestReceived += new RequestHandler<RTUSession, RTUReqInfo>(_RTUServer_NewRequestReceived);
this.SessionClosed += new SessionHandler<RTUSession, CloseReason>(_RTUServer_SessionClosed); 而不是非要实例化一个对象之后 通过对象添加。


博主从事:物联网数据采集(wifi gprs 以太网 zigbee )的 终端 软硬件, 服务端软件 设计和开发工作 ,技术讨论或合作 加QQ群:389268470,验证注明 博客园

关于 supersocket 不能通过Bootstrap 启动的更多相关文章

  1. Tomcat8源码笔记(二)Bootstrap启动

    TOMCAT源码调试入口是Bootstrap类的main方法,我的启动参数VM: -Dcatalina.home=E:/Tomcat_Source_Code/apache-tomcat-8.0.53- ...

  2. BootStrap启动类

    来源 本文整理自 <Tomcat内核设计剖析>.<Tomcat结构解析> 加上自己的理解.源码来自 Tomcat8.5 版本 // org.apache.catalina.st ...

  3. Django+bootstrap启动登录模板页面(Django三)

    上次用Django启动了我的第一个页面 具体步骤参考:初步启动DjangoDjango启动第一个页面但是页面非常简陋,所以我从网上找了个模板,下载网址:免费下载模板,解压后内部文件如下: 效果图:下面 ...

  4. AngularJS中bootstrap启动

    对于一般的使用者来说,AngularJS的ng-app都是手动绑定到某个dom元素.但是在一些应用中,这样就显得很不方便了 绑定初始化 通过绑定来进行angular的初始化,会把js代码侵入到html ...

  5. AngularJS API之bootstrap启动

    对于一般的使用者来说,AngularJS的ng-app都是手动绑定到某个dom元素.但是在一些应用中,这样就显得很不方便了. 绑定初始化 通过绑定来进行angular的初始化,会把js代码侵入到htm ...

  6. Tomcat下bootstrap启动分析

    "C:\Program Files\Java\jdk1.7.0\bin\javaw.exe" -agentlib:jdwp=transport=dt_socket,suspend= ...

  7. Bootstrap启动(关闭)轮播

    $('.carousel').carousel(); //启动轮播 $('.carousel').carousel(‘pause’); //关闭轮播 $(‘.carousel’).carousel({ ...

  8. SuperSocket入门(二)- 探索AppServer、AppSession,Conmmand和App.config

          在上一篇文章中,我们已经了解到了如何在SuperSocket处理客户端请求. 同时我们可能会发现一个问题,如果我们的服务器端包含有很多复杂的业务逻辑,这样的switch/case代码将会很 ...

  9. C#SuperSocket的搭建--通过配置启动

    之前我们借助一个SuperSocket实现了一个简易版的服务器, 但是不管是Server还是Session都是使用框架的,本篇博客我们要实现自己的Server和Session,来重写框架原生的Serv ...

随机推荐

  1. UITableView 编辑模式(增加-删除-移动---自定义左滑 title) xib cell

    参考:  http://www.open-open.com/lib/view/open1430008922468.html - (void)viewDidLoad { [super viewDidLo ...

  2. 用rc.local工具开机自启动

    对于一些程序来说,无法直接开机自启动.那么我们可以利用开机自启动来执行一些命令,达到开机自启动的效果!!! 下面用tomcat来举个例子 tomcat启动的命令一般是./startup.sh 那么我们 ...

  3. Qt 学习之路 2(3):Hello, world!

     豆子  2012年8月22日  Qt 学习之路 2  107条评论 想要学习 Qt 开发,首先要搭建 Qt 开发环境.好在现在搭建 Qt 开发环境还是比较简单的.我们可以到 Qt 官方网站找到最新版 ...

  4. Dictionary 检测key是否存在

    if(dict.ContainsKey(T key)) { //已存在key }

  5. java Response 设置中文编码

    response.setHeader("Content-type", "text/html;charset=UTF-8"); response.setChara ...

  6. Flask&&人工智能AI -- 8 HTML5+ 初识,HBuilder,夜神模拟器,Webview

    昨日内容回顾 1.增删改查: 增: db.collections.insert({a:1}) // 官方不推荐了 db.collections.insertMany([{a:1},{b:1}]) in ...

  7. 制作网页logo

    一.先把jpg.png.jpeg等图片通过在线ico图标制作软件变成.ico图片 在线制作ico图标工具: http://www.bitbug.net/ 二.在head里面添加如下代码 <lin ...

  8. hive 取两次记录的时间差 lead lag first_value last_value

    -- LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值 -- 第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如 ...

  9. 3.centos7 常用防火墙命令(转)

    1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...

  10. js实现放大镜效果

    原理: 鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置: 放大镜的移动方向和大图片的移动方向:横向和纵向都是相反,才可以保证同步: 需要元素:大图和小图,存放大图和小图的容器 ...