在SuperSocket入门(二)中我们已经简单了解了通过配置App.config文件使用BootStrap启动SuperSocket服务。我们先来看一下上个案例中的基本配置文件示例:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!--log 日志记录-->
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
<!--SocketEngine-->
<section name="superSocket" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine"/>
</configSections>
<!--服务信息描述,在window服务模式下的名称标识-->
<appSettings>
<add key="ServiceName" value="SupperSocketService"/>
<add key="ServiceDescription" value="黄昏前黎明后的Socket程序"/>
</appSettings>
<!--SuperSocket服务配置信息 serverType是项目的服务如我自定义的myserver-->
<!--name: 实例名称
serverType: 实例运行的AppServer类型
ip: 侦听ip
port: 侦听端口-->
<superSocket>
<servers>
<!--textEncoding 编码方式"gb2312","utf-8" 默认是acii-->
<server name="SuperSocketDemo" textEncoding="gb2312" serverType="SuperSocketDemo.Server.MyServer,SuperSocketDemo" ip="Any" port="" maxConnectionNumber="">
</server>
</servers>
</superSocket>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
</configuration>

App.config

1、服务名称:

<appSettings>

<add key="ServiceName" value="SupperSocketService"/>

            <add key="ServiceDescription" value="黄昏前黎明后的Socket程序"/>
       </appSettings>
       这个配置项将被用作SuperSocket系统服务的名称。如果ServiceName设置成SupperSocketService, 则运行InstallService.bat这个批处理文件之后(注意:该处理文件使用的是SuperSocket.SocketService.exe -i命令,使用supersocket.socketservice.exe务必使server所需要的所有程序集都和SuperSocket.SocketService.exe在同一目录), SuperSocket系统服务将以"SupperSocketService"这个名字安装到系统之中。
 
     2、 SuperSocket的根配置
       <socketServer loggingMode="IndependantFile">
                 ....
       </socketServer>
      根配置中的参数详情:
       loggingMode 值:           ShareFile: 多个服务器实例共享同日志文件,默认选项;
                                   IndependantFile:多个服务器实例拥有独立的日志文件;
                                              Console: 控制台日志输出,只在控制台应用程序中有效。
       maxWorkingThreads:线程池最大工作线程数量
       minWorkingThreads:线程池最小工作线程数量
       maxCompletionPortThreads:线程池最大完成端口线程数量
       minCompletionPortThreads:线程池最小完成端口线程数量
 
         3、服务器实例配置
         <servers>
              <server name="SuperSocketDemo" textEncoding="gb2312" serverType="SuperSocketDemo.Server.MyServer,SuperSocketDemo" ip="Any" port="2020" maxConnectionNumber="100">
              </server>
         </servers>
         服务器实例配置详情:
  • name: 服务器实例名称
  • serviceName: 指定服务器实例运行的服务的名称。此名称为定义此服务器实例运行的服务的节点的名称。
  • ip: 指定socket服务器监听的服务器IP地址。Any: 监听本机所有的IPv4地址;IPv6Any, 监听本机所有IPv6的地址。
  • port: 指定socket服务器监听的端口。
  • mode: Sync:同步模式;Async: 异步模式;Udp: Udp协议
  • disabled: true或者false。是否禁用该服务器实例,默认为否。
  • readTimeOut: 从socket读取数据超时时间,默认为0。
  • sendTimeOut: 从socket发送数据超时时间,默认为0。
  • maxConnectionNumber: 最大允许的客户端连接数目,默认为100。
  • receiveBufferSize: 用于接收数据的缓冲区大小,默认为2048。
  • sendBufferSize: 用户发送数据的缓冲区大小,默认为2048。
  • logCommand: true或者false,是否记录命令。
  • clearIdleSession: true或者false, 是否清除空闲会话,默认为false。
  • clearIdleSessionInterval: 清除空闲会话的时间间隔,默认为120,单位为秒。
  • idleSessionTimeOut: 会话超时时间,默认值为300,单位为秒。
  • security: Empty, Tls或者Ssl3。 Socket服务器所采用的传输层加密协议,默认值为空。
  • maxCommandLength: 最大允许的命令长度,默认值为1024。
  • disableSessionSnapshot: 是否禁用会话快照,默认值为false。(1.4 SP1)
  • sessionSnapshotInterval: 生成会话快照的时间间隔。默认值为5,单位为秒。
  • keepAliveTime: keep alive消息发送时间间隔。默认值为600, 单位为秒。
  • keepAliveInterval:keep alive失败重试的时间间隔。默认值为60, 单位为秒。
       4、多服务器实例的配置
       SuperSocket支持在同一程序中运行多个服务器实例监听在不同的IP或端口,只需在配置文件中添加两个server节点,设置不同的实例名称和IP端口组合即可。
 
<servers>
     <server name="MyServerA"
          serviceName="SupperSocketServiceA"
          ip="Any"
          port="2016">
</server>
<server name="MyServerB"
          serviceName="SupperSocketServiceB"
          ip="Any"
          port="2017">
</server>
<services>
         <service name="SupperSocketServiceA" type="SuperSocketDemo.Server.MyServerA,SuperSocketDemo.SupperSocketServiceA" />
         <service name="SupperSocketServiceB" type="SuperSocketDemo.Server.MyServerB,SuperSocketDemo.SupperSocketServiceB" />
</services>
         服务配置
         name: 服务定义的名称,即服务器实例节点serviceName所对应的名称。
         type: 该服务所对应MyServer类型的完整名称。
        在某些情况下,需要两个服务器实例之间进行交互。例如MyServerA上的客户端C1向MyServerB上的客户端C2转发消息,这样就需要MyServerA接收到C1的命令之后通过MyServerB将消息转发给客户端C2。在MyServerA的OnStartup方法里面可利用SocketServerManager的GetServerByName(string name)方法通过服务器实例的名称来获取服务器实例:
 
public class MyServerA : AppServer
{
private IDespatchServer m_DespatchServer; protected override void OnStartup()
{
m_DespatchServer = SocketServerManager.GetServerByName("ServerB") as IDespatchServer;
base.OnStartup();
} internal void DespatchMessage(string targetSessionKey, string message)
{
m_DespatchServer.DispatchMessage(targetSessionKey, message);
}
}

MyServerA 类

public class MyServerB : AppServer, IDespatchServer
{
public void DispatchMessage(string sessionKey, string message)
{
var session = GetAppSessionByIndentityKey(sessionKey);
if (session == null)
return; session.SendResponse(message);
}
}
}

MyServerB 类

interface IDespatchServer
{
void DispatchMessage(string sessionKey, string message);
}

IDespatchServer类

      这样就可以在MyServerA中通过调用MyServerB实例的方法来向MyServerB的客户端发送消息了。使用 SuperSocket 实现 Socket 服务器的时候,不可避免的需要在配置文件中定义一些参数。 SuperSocket 提供了非常简单的方法,让我们在配置文件中定义这些参数,然后在代码中读取它们。服务端扩展配置,自定义属性字段我们后面再来学习。

SuperSocket入门(三)-Telnet多服务实例和服务实例交互配置详解的更多相关文章

  1. Java从入门到精通——数据库篇Mongo DB 安装启动及配置详解

    一.概述     Mongo DB 下载下来以后我们应该如何去安装启动和配置才能使用Mongo DB,本篇博客就给大家讲述一下Mongo DB的安装启动及配置详解. 二.安装 1.下载Mongo DB ...

  2. centos 6.5环境利用iscsi搭建SAN网络存储服务及服务端target和客户端initiator配置详解

    一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够 ...

  3. 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解

    注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...

  4. 2-4、nginx特性及基础概念-nginx web服务配置详解

    Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...

  5. 第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解

    老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当 ...

  6. Spring之旅第三篇-Spring配置详解

    上一篇学习了IOC的概念并初步分析了实现原理,这篇主要学习Spring的配置,话不多说,让我们开始! 一.Bean元素配置 1.1 基本配置 看一个最基本的bean配置 <bean name=& ...

  7. logback -- 配置详解 -- 三 -- <encoder>

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...

  8. log4j.properties配置详解与实例

    log4j.properties配置详解与实例 第一步:加入log4j-1.x.x.jar到lib下. 第二步:在工程的src下下建立log4j.properties.内容如下: #OFF,syste ...

  9. 【转】logback logback.xml常用配置详解(三) <filter>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

随机推荐

  1. pe and elf

    http://staff.ustc.edu.cn/~sycheng/sst/exp_crack/ELF.pdf https://refspecs.linuxbase.org/elf/TIS1.1.pd ...

  2. C#代码发送邮件

    本次测试的邮箱为163邮箱 1.首相对邮箱进行一些设置(详见下图):打开设置选取客户端授权密码项,开启设置:以后在客户端登录时将使用刚刚设置的密码! 2.上干货 public static void ...

  3. js中焦点的含义是什么

    焦点即是光标   焦点是在页面上屏幕中闪动的的小竖线,鼠标点击可获得光标,Tab键可按照设置的Tabindex切换焦点

  4. java 读excel xlsx

    http://bbs.csdn.net/topics/380257685 import java.io.File; import java.io.IOException; import java.io ...

  5. javascript 巴西世界杯倒计时

    巴西世界杯是足球迷的今年最终关注的事情,做为球迷的我也不例外,自己做了一个巴西世界杯的倒计时. <!DOCTYPE html> <html> <head> < ...

  6. python--字符串操作(删除,替换)

    示例: 替换字符串开头和结尾处的空格 1. [代码][Python]代码     跳至 [1] [全屏预览] view source print? 01 # -*- coding: utf-8 -*- ...

  7. Android实时监听网络状态

    Android实时监听网络状态(1)   其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就 ...

  8. iOS开发——工厂模式

    工厂模式很好用,为表诚意,我直接搞个实用的例子放这,解析一个订单的数据,并且这个订单里面可能不止一件商品的做法. 还是直接上代码,不懂的地方,再提出来. 1.在MyOrderDeals.h文件中 #i ...

  9. 微信小程序之----弹框组件modal

    modal modal类似于javascript中的confirm弹框,默认情况下是一个带有确认取消的弹框,不过点击取消后弹框不会自动隐藏,需要通过触发事件调用函数来控制hidden属性. 官方文档 ...

  10. JavaScript(一)---- 概述

    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...