点击或拖拽改变大小

NetSimplifyServer 类

异步消息处理服务器,主要用来实现接收客户端信息并进行消息反馈的操作,适用于客户端进行远程的调用,要求服务器反馈数据。
继承层次

命名空间:  HslCommunication.Enthernet
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:8.1.3.0 (8.1.3.0)
语法
public class NetSimplifyServer : NetworkAuthenticationServerBase

NetSimplifyServer 类型公开以下成员。

构造函数
  名称说明
公共方法NetSimplifyServer
实例化一个服务器消息请求的信息
Top
属性
  名称说明
公共属性ClientCount
当前在线的客户端数量
公共属性IsStarted
服务器引擎是否启动
(继承自 NetworkServerBase。)
公共属性IsUseAccountCertificate
获取或设置是否对客户端启动账号认证
(继承自 NetworkAuthenticationServerBase。)
公共属性代码示例LogNet
组件的日志工具,支持日志记录
(继承自 NetworkBase。)
公共属性Port
服务器的端口号
(继承自 NetworkServerBase。)
公共属性代码示例Token
网络类的身份令牌
(继承自 NetworkBase。)
公共属性UseSynchronousNet
是否使用同步的网络通讯
(继承自 NetworkBase。)
Top
方法
  名称说明
公共方法AddAccount
新增账户,如果想要启动账户登录,比如将IsUseAccountCertificate设置为True
(继承自 NetworkAuthenticationServerBase。)
受保护的方法AsyncAcceptCallback
异步传入的连接申请请求
(继承自 NetworkServerBase。)
受保护的方法CheckRemoteToken
检查当前的头子节信息的令牌是否是正确的
(继承自 NetworkBase。)
受保护的方法CloseAction
关闭网络的操作
(重写 NetworkServerBaseCloseAction.)
公共方法ConnectHslAlientClient
创建一个指定的异形客户端连接,使用Hsl协议来发送注册包
(继承自 NetworkServerBase。)
受保护的方法代码示例CreateSocketAndConnect(IPEndPoint, Int32)
创建一个新的socket对象并连接到远程的地址
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnect(String, Int32)
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnect(String, Int32, Int32)
创建一个新的socket对象并连接到远程的地址
(继承自 NetworkBase。)
公共方法DeleteAccount
删除一个账户的信息
(继承自 NetworkAuthenticationServerBase。)
受保护的方法DeleteFileByName
删除文件的操作
(继承自 NetworkXBase。)
公共方法Dispose
释放当前的对象
(继承自 NetworkAuthenticationServerBase。)
受保护的方法Dispose(Boolean)
释放当前的对象
(继承自 NetworkAuthenticationServerBase。)
公共方法Equals (继承自 Object。)
受保护的方法Finalize (继承自 Object。)
公共方法GetHashCode (继承自 Object。)
公共方法GetType (继承自 Object。)
受保护的方法HeadBytesReceiveCallback
指令头接收方法
(继承自 NetworkXBase。)
受保护的方法MemberwiseClone (继承自 Object。)
受保护的方法PreprocessFolderName
预处理文件夹的名称,除去文件夹名称最后一个'\',如果有的话
(继承自 NetworkXBase。)
受保护的方法ReadStream
读取流中的数据到缓存区
(继承自 NetworkBase。)
受保护的方法Receive
接收固定长度的字节数组
(继承自 NetworkBase。)
受保护的方法ReceiveAndCheckBytes
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法ReceiveAsync
接收固定长度的字节数组
(继承自 NetworkBase。)
受保护的方法ReceiveByMessage
接收一条完整的 数据内容 -> Receive a complete data content
(继承自 NetworkBase。)
受保护的方法ReceiveBytesContentFromSocket(Socket)
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法ReceiveBytesContentFromSocket(Socket, Int32)
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法ReceiveFileFromSocket(Socket, Stream, ActionInt64, Int64)
[自校验] 从网络中接收一个文件,写入数据流,如果结果异常,则结束通讯,参数顺序文件名,文件大小,文件标识,上传人
(继承自 NetworkXBase。)
受保护的方法ReceiveFileFromSocket(Socket, String, ActionInt64, Int64)
[自校验] 从网络中接收一个文件,如果结果异常,则结束通讯
(继承自 NetworkXBase。)
受保护的方法ReceiveFileHeadFromSocket
[自校验] 从套接字中接收文件头信息
(继承自 NetworkXBase。)
受保护的方法ReceiveStringArrayContentFromSocket
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法ReceiveStringContentFromSocket
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法Send
发送消息给套接字,直到完成的时候返回
(继承自 NetworkBase。)
受保护的方法SendAccountAndCheckReceive
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法SendAsync
发送一个异步的数据信息,该方式在NET35里是不可用的。
(继承自 NetworkBase。)
受保护的方法SendBaseAndCheckReceive
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法SendBytesAndCheckReceive
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法SendFileAndCheckReceive(Socket, Stream, String, String, String, ActionInt64, Int64)
[自校验] 将流数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯
(继承自 NetworkXBase。)
受保护的方法SendFileAndCheckReceive(Socket, String, String, String, String, ActionInt64, Int64)
[自校验] 将文件数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯
(继承自 NetworkXBase。)
受保护的方法SendFileStreamToSocket
[自校验] 将文件数据发送至套接字,如果结果异常,则结束通讯
(继承自 NetworkXBase。)
公共方法SendMessage(AppSession, Int32, Byte)
向指定的通信对象发送字节数据
公共方法SendMessage(AppSession, Int32, String)
向指定的通信对象发送字符串数据
公共方法SendMessage(AppSession, Int32, String)
向指定的通信对象发送字符串数组
受保护的方法SendStream
发送一个流的所有数据到网络套接字
(继承自 NetworkXBase。)
受保护的方法SendStringAndCheckReceive(Socket, Int32, String)
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceive(Socket, Int32, String)
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
公共方法ServerClose
关闭服务器的引擎
(继承自 NetworkServerBase。)
公共方法ServerStart
使用已经配置好的端口启动服务器的引擎
(继承自 NetworkServerBase。)
公共方法ServerStart(Int32)
启动服务器的引擎
(继承自 NetworkServerBase。)
受保护的方法SocketAcceptExtraCheck
当客户端的socket登录的时候额外检查的信息
(继承自 NetworkAuthenticationServerBase。)
受保护的方法StartInitialization
服务器启动时额外的初始化信息
(继承自 NetworkServerBase。)
受保护的方法ThreadPoolCheckTimeOut
检查网络套接字是否操作超时,需要对套接字进行封装
(继承自 NetworkBase。)
受保护的方法ThreadPoolLogin
当接收到了新的请求的时候执行的操作
(重写 NetworkServerBaseThreadPoolLogin(Socket, IPEndPoint).)
公共方法ToString
返回表示当前对象的字符串
(重写 NetworkXBaseToString.)
受保护的方法WriteStream(Stream, Byte)
将缓冲区的数据写入到流里面去
(继承自 NetworkBase。)
受保护的方法WriteStream(Socket, Stream, Int64, ActionInt64, Int64, Boolean)
从套接字中接收所有的数据然后写入到流当中去
(继承自 NetworkXBase。)
Top
事件
  名称说明
公共事件ReceivedBytesEvent
接收字节信息的事件
公共事件ReceiveStringArrayEvent
接收字符串数组信息的事件
公共事件ReceiveStringEvent
接收字符串信息的事件
Top
字段
  名称说明
受保护的字段CoreSocket
通讯类的核心套接字
(继承自 NetworkBase。)
Top
备注
详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/7697782.html
示例
此处贴上了Demo项目的服务器配置的示例代码
NetSimplifyServer示例
private NetSimplifyServer simplifyServer;
private Timer timerSecond;

private void Start()
{
    try
    {
        simplifyServer = new NetSimplifyServer( );                                          // 实例化
        simplifyServer.Token = new Guid( textBox3.Text );                                   // 设置令牌
        simplifyServer.ReceiveStringEvent += SimplifyServer_ReceiveStringEvent;             // 接收字符串的时候触发
        simplifyServer.ReceiveStringArrayEvent += SimplifyServer_ReceiveStringArrayEvent;
        simplifyServer.LogNet = new HslCommunication.LogNet.LogNetSingle( Application.StartupPath + @"\Logs\log.txt" );
        simplifyServer.LogNet.BeforeSaveToFile += LogNet_BeforeSaveToFile;                  // 日志保存前先显示出来

        simplifyServer.AddAccount( "admin", "123456" );
        simplifyServer.AddAccount( "hsl", "test" );
        simplifyServer.IsUseAccountCertificate = checkBox1.Checked;
        simplifyServer.ServerStart( int.Parse( textBox1.Text ) );                           // 启动服务
        userButton1.Enabled = false;


        timerSecond = new Timer( );                            // 这个定时器的功能是每秒更新在线的客户端数量
        timerSecond.Interval = 1000;
        timerSecond.Tick += TimerSecond_Tick;
        timerSecond.Start( );
    }
    catch(Exception ex )
    {
        MessageBox.Show( "创建失败:" + ex.Message );
    }
}

private void SimplifyServer_ReceiveStringArrayEvent( AppSession setssion, NetHandle handle, string[] array )
{
    simplifyServer.SendMessage( setssion, handle, array );
}

private void TimerSecond_Tick( object sender, EventArgs e )
{
    label6.Text = simplifyServer.ClientCount.ToString( );
}

private void LogNet_BeforeSaveToFile( object sender, HslCommunication.LogNet.HslEventArgs e )
{
    if(InvokeRequired)
    {
        BeginInvoke( new Action<object, HslCommunication.LogNet.HslEventArgs>( LogNet_BeforeSaveToFile), sender, e );
        return;
    }

    textBox2.AppendText( e.HslMessage.ToString( ) + Environment.NewLine );
}

private void SimplifyServer_ReceiveStringEvent( AppSession session, NetHandle handle, string value )
{
    if (handle == 1)
    {
        // 当收到客户端发来的信号1的时候进行操作的消息
        simplifyServer.SendMessage( session, handle, "这是测试信号:" + value );
    }
    else if (handle < 100)
    {
        simplifyServer.SendMessage( session, handle, "这是测试信号:" + handle );
    }
    else
    {
        simplifyServer.SendMessage( session, handle, "不支持的消息" );
    }


    // 显示出来,谁发的,发了什么
    textBox2.Invoke( new Action( ( ) => {
        textBox2.AppendText( $"{session} [{handle}] {value}" + Environment.NewLine );
    } ) );

}

private void userButton1_Click( object sender, EventArgs e )
{
    // 点击了启动服务的按钮
    Start( );
}
参见