zoukankan      html  css  js  c++  java
  • 关于 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,验证注明 博客园

  • 相关阅读:
    javascript高级程序设计---Event对象三
    javascript高级程序设计---Event对象二
    javascript高级程序设计---Event对象
    javascript高级程序设计---CSS操作
    javascript高级程序设计---Element对象
    javascript高级程序设计---document节点
    javascript高级程序设计---NodeList和HTMLCollection
    javascript高级程序设计---DOM
    Javascript高级程序设计——客户端检测
    学习javascript系列之变量
  • 原文地址:https://www.cnblogs.com/Chendezhou/p/7421611.html
Copyright © 2011-2022 走看看