关于 supersocket 不能通过Bootstrap 启动
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 启动的更多相关文章
- Tomcat8源码笔记(二)Bootstrap启动
TOMCAT源码调试入口是Bootstrap类的main方法,我的启动参数VM: -Dcatalina.home=E:/Tomcat_Source_Code/apache-tomcat-8.0.53- ...
- BootStrap启动类
来源 本文整理自 <Tomcat内核设计剖析>.<Tomcat结构解析> 加上自己的理解.源码来自 Tomcat8.5 版本 // org.apache.catalina.st ...
- Django+bootstrap启动登录模板页面(Django三)
上次用Django启动了我的第一个页面 具体步骤参考:初步启动DjangoDjango启动第一个页面但是页面非常简陋,所以我从网上找了个模板,下载网址:免费下载模板,解压后内部文件如下: 效果图:下面 ...
- AngularJS中bootstrap启动
对于一般的使用者来说,AngularJS的ng-app都是手动绑定到某个dom元素.但是在一些应用中,这样就显得很不方便了 绑定初始化 通过绑定来进行angular的初始化,会把js代码侵入到html ...
- AngularJS API之bootstrap启动
对于一般的使用者来说,AngularJS的ng-app都是手动绑定到某个dom元素.但是在一些应用中,这样就显得很不方便了. 绑定初始化 通过绑定来进行angular的初始化,会把js代码侵入到htm ...
- Tomcat下bootstrap启动分析
"C:\Program Files\Java\jdk1.7.0\bin\javaw.exe" -agentlib:jdwp=transport=dt_socket,suspend= ...
- Bootstrap启动(关闭)轮播
$('.carousel').carousel(); //启动轮播 $('.carousel').carousel(‘pause’); //关闭轮播 $(‘.carousel’).carousel({ ...
- SuperSocket入门(二)- 探索AppServer、AppSession,Conmmand和App.config
在上一篇文章中,我们已经了解到了如何在SuperSocket处理客户端请求. 同时我们可能会发现一个问题,如果我们的服务器端包含有很多复杂的业务逻辑,这样的switch/case代码将会很 ...
- C#SuperSocket的搭建--通过配置启动
之前我们借助一个SuperSocket实现了一个简易版的服务器, 但是不管是Server还是Session都是使用框架的,本篇博客我们要实现自己的Server和Session,来重写框架原生的Serv ...
随机推荐
- GUI JFrame窗体介绍:
GUI JFrame窗体介绍: https://www.cnblogs.com/-ksz/p/3422074.html
- SpringMVC DeferedResult和servlet3.1 AsyncContext异步请求
先看一个简单的示例: @RequestMapping("/getFuture") public Future<String> getFuture() { System. ...
- 单点登录-JWT(Json Web Tokens)
来自:http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html 1.跨域认证 1.用户向服务器发送用户名和密码. 2.服务 ...
- JavaSE---Collections
1.简介: Collections是一个工具类 1.1 排序 a,正序 sort是其静态方法,有2种参数形式: public static <T extends Comparable<? ...
- poi 详细demo
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IO ...
- [转]jQuery的.live()和.die()
本文转自:http://www.cnblogs.com/dumuqiao/archive/2011/09/09/2172513.html 翻译原文地址:http://www.alfajango.com ...
- WSGI学习系列Pecan
Pecan Introduce Pecan是一个轻量级的基于Python的Web框架, Pecan的目标并不是要成为一个“full stack”的框架, 因此Pecan本身不支持类似Session和D ...
- ASP.NET中多语言的实现
一个网站可能具备多个语言,要实现这个功能在ASP.NET中是非常简单的.我们需要为项目添加资源文件文件夹,并且添加针对网站的特定的资源文件等即可.在ASP.NET中资源文件分成两类:全局和页面级(即“ ...
- Spring中的一些常用接口
一.ApplicationContextAware接口 注:可以在spring容器初始化的时候调用setApplicationContext方法,从而获得ApplicationContext中的所有b ...
- Java入门之IDE集成开发环境安装及配置
常用的开发工具 一.Eclipse Eclipse 是一个开放源代码的.基于 Java 的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.幸运的是,Eclipse ...