摘要: SuperSocket支持同步模式(Sync)下的传输层加密(TLS/SSL)。首先,你需要准备好用于加密的证书文件(带私钥)。用于测试的证书可由SuperSocket的CertificateCreator来生成(http://supersocket.codeplex.com/releases/view/59311), 生成之后(*.pfx)导入到测试服务器的可信任证书目录中。生产环境的证书需要向证书颁发机构提交申请之后才能获得证书文件,获得证书之后到计算机的证书管理器中导出该证书的带私钥的证书文件(*.pfx).然后,在配置文件中增加加密传输的相关属性和节点。<server name= 阅读全文
posted @ 2011-05-16 21:21 江大渔 阅读(3463) 评论(5) 推荐(1) 编辑
摘要: SuperSocket内置了支持Flash和Silverlight的客户端的Socket策略服务器,其实现代码在SuperSocket.Facility.dll这个assembly之中。所以要启用策略服务器,首先要保证SuperSocket.Facility.dll存在于SuperSocket运行目录,然后在配置文件中增加相关的节点即可。Flash策略服务器<socketServer> <servers> <server name="FlashPolicyServer" serviceName="FlashPolicyService& 阅读全文
posted @ 2011-05-15 10:55 江大渔 阅读(2312) 评论(7) 推荐(1) 编辑
摘要: SuperSocket支持在同一程序中运行多个服务器实例监听在不同的IP或端口,只需在配置文件中添加两个server节点即可:<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="socketServer" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.So 阅读全文
posted @ 2011-05-15 10:24 江大渔 阅读(4070) 评论(6) 推荐(1) 编辑
摘要: SuperSocket中连接过滤器(Connection Filter)是用与对客户端连接进行过滤的接口。通过连接过滤器, 你可以允许或者禁止指定来源的客户端对服务器进行连接。连接过滤器(Connection Filter)接口:/// <summary>/// The basic interface of connection filter/// </summary>public interface IConnectionFilter{ /// <summary> /// Initializes the connection filter /// < 阅读全文
posted @ 2011-05-14 11:48 江大渔 阅读(2865) 评论(5) 推荐(1) 编辑
摘要: SuperSocket的Command Filter功能类似于ASP.NET MVC中的Action Filter,你可以用它来截获Command的执行,在Command运行之前或之后运行Filter的代码。Command Filter必须继承自Attribute类CommandFilterAttribute:[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]public abstract class CommandFilterAttribute : Attribute{ public abstract void ... 阅读全文
posted @ 2011-05-11 21:16 江大渔 阅读(2826) 评论(3) 推荐(0) 编辑
摘要: 实现自己的Socket服务器,不免需要将某些参数放到配置文件之中。而SuperSocket提供了非常好用的接口让你将参数存入配置文件之中并且在你AppServer中能够方便的读取和使用。如下配置代码: 1: <server name="FlashPolicyServer" 2: serviceName="FlashPolicyService" 3: ip="Any" port="843" 4: mode="Async" 5: receiveBufferSize="32" 阅读全文
posted @ 2011-05-04 20:08 江大渔 阅读(2118) 评论(0) 推荐(0) 编辑
摘要: SuperSocket内置了日志功能,你只需通过下面两个步骤来启用它:1) 包含SuperSocket提供的配置文件log4net.config到你的启动程序的/Config目录2) 如果你用自定义容器运行SuperSocket,请确认您添加了LogUtil.Setup(); 这段代码到程序入口位置,用于启用SuperSocket日志功能SuperSocket的AppServer和AppSession都有Logger属性,你可以直接使用他们来记录日志。SuperSocket的日志是以文件的形式存放在运行目录的Logs子目录里面,Log相关的配置请参考文档http://www.cnblogs.c 阅读全文
posted @ 2011-05-03 23:10 江大渔 阅读(3984) 评论(0) 推荐(0) 编辑
摘要: AppServer内置了一个高效Session容器,允许你通过多种方式来获取你想要的Session并进行通信。获取指定SessionKey的Sessionvar session = appServer.GetAppSessionByIndentityKey(sessionKey);if(session != null) session.SendResponse("Hello world!");实时的从Session容器中获取。获取所有连接上的Sessionvar sessions = appServer.GetAllSessions();foreach(var s in s 阅读全文
posted @ 2011-05-03 22:38 江大渔 阅读(5099) 评论(9) 推荐(1) 编辑
摘要: Socket里面的协议解析是Socket通讯程序设计中最复杂的地方,如果你的应用层协议设计或实现不佳,Socket通讯中常见的粘包,分包就难以避免。SuperSocket内置了命令行格式的协议CommandLineProtocol,如果你的用用使用了其它格式的协议,你就必须自行实现自定义协议CustomProtocol。实现自定义协议实现自定义协议需要实现ICustomProtocol的Protocol类,和一个实现ICommandReader接口的CommandReader类。public interface ICustomProtocol<TCommandInfo> where 阅读全文
posted @ 2011-04-28 21:50 江大渔 阅读(7270) 评论(6) 推荐(1) 编辑
摘要: 应用层协议是Socket通信的基础, 而SuperSocket直接内建了命令行协议(CommandLineProtocol)。命令行协议是一种应用非常广泛的协议,例如我们常见的Telnet, SMTP, POP3和FTP等等都是以命令行协议为基础的。如果你没有自定义协议的话,SuperSocket默认的协议就是命令行协议 ,这样就极大的简化了基于此类协议的开发。命令行协议的StringCommandInfo命令行协议的CommandInfo是StringCommandInfo这个类型:public class StringCommandInfo{ string Key { get; se... 阅读全文
posted @ 2011-04-28 20:59 江大渔 阅读(4034) 评论(7) 推荐(1) 编辑
摘要: 在AppSession和Commands中访问AppServer很方便,示例代码如下:public class YourSession : AppSession<YourSession>{ public override void StartSession() { SendResponse("Welcome to " + AppServer.Name); } public override void HandleExceptionalError(Exception e) { }}public class STOP : St... 阅读全文
posted @ 2011-04-27 21:31 江大渔 阅读(3243) 评论(2) 推荐(0) 编辑
摘要: 大部分的业务逻辑代码应该放在Command里面。Command会由SuperSocket引擎根据收到的CommandInfo的Key来自动的执行。例如,客户端向SuperSocket发送一个以ECHO为Key的Command时, 如"ECHO I love you\r\n",名为ECHO的Command就会被执行。Echo命令定义如下:public class ECHO : StringCommandBase<EchoSession>{ #region CommandBase<EchoSession> Members public override 阅读全文
posted @ 2011-04-27 21:02 江大渔 阅读(5585) 评论(0) 推荐(2) 编辑
摘要: 在SocketService中运行你的AppServerSuperSocket 提供了一个名叫"SocketService"的项目,它是一个能够让AppServer运行于其中的容器。 SocketService能够使你的AppServer 以控制台或者windows服务的形式运行 (需注册)。有两种方法可以让你的AppServer运行于SocketService之中:复制你的AppServer的dll输出到SocketService的编译输出目录在你的AppServer项目中引用SocketService 项目。如果你是用这种方式,你需要新建一个名为"SuperS 阅读全文
posted @ 2011-04-25 21:32 江大渔 阅读(5408) 评论(3) 推荐(0) 编辑
摘要: 什么是AppSession?AppSession 代表一个和客户端的逻辑连接,基于连接的操作应该定于在该类之中。你可以用该类的实例发送数据到客户端,接收客户端发送的数据或者关闭连接。什么是AppServer?AppServer 代表了监听客户端连接,承载TCP连接的服务器实例。理想情况下,我们可以通过AppServer实例获取任何你想要的客户端连接,服务器级别的操作和逻辑应该定义在此类之中。创建你的AppSession现在,我们以EchoServer为例:using System;using System.Collections.Generic;using System.Linq;using 阅读全文
posted @ 2011-04-21 22:11 江大渔 阅读(7032) 评论(4) 推荐(0) 编辑
摘要: 配置文件示例<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> <section name="socketServer" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine"/> </configSections> <appSett 阅读全文
posted @ 2011-04-20 21:53 江大渔 阅读(16643) 评论(8) 推荐(4) 编辑