点击或拖拽改变大小

NetSimplifyClient 类

同步访问数据的客户端类,用于向服务器请求一些确定的数据信息
继承层次
SystemObject
  HslCommunication.Core.NetNetworkBase
    HslCommunication.Core.NetNetworkDoubleBaseHslMessage, RegularByteTransform
      HslCommunication.EnthernetNetSimplifyClient

命名空间:  HslCommunication.Enthernet
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:8.1.3.0 (8.1.3.0)
语法
public class NetSimplifyClient : NetworkDoubleBase<HslMessage, RegularByteTransform>

NetSimplifyClient 类型公开以下成员。

构造函数
  名称说明
公共方法NetSimplifyClient
实例化一个客户端对象,需要手动指定Ip地址和端口
公共方法NetSimplifyClient(String, Int32)
实例化一个客户端的对象,用于和服务器通信
Top
属性
  名称说明
公共属性AlienSession
当前的异形连接对象,如果设置了异形连接的话
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共属性代码示例ByteTransform
当前客户端的数据变换机制,当你需要从字节数据转换类型数据的时候需要。-> The current client's data transformation mechanism is required when you need to convert type data from byte data.
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共属性ConnectionId
当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共属性代码示例ConnectTimeOut
获取或设置连接的超时时间,单位是毫秒 -> Gets or sets the timeout for the connection, in milliseconds
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共属性代码示例IpAddress
获取或是设置服务器的IP地址
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共属性代码示例LogNet
组件的日志工具,支持日志记录
(继承自 NetworkBase。)
公共属性代码示例Port
获取或设置服务器的端口号
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共属性代码示例ReceiveTimeOut
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈 -> Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共属性代码示例Token
网络类的身份令牌
(继承自 NetworkBase。)
公共属性UseSynchronousNet
是否使用同步的网络通讯
(继承自 NetworkBase。)
Top
方法
  名称说明
受保护的方法AccountCertificate
认证账号,将使用已经设置的用户名和密码进行账号认证。
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
受保护的方法CheckRemoteToken
检查当前的头子节信息的令牌是否是正确的
(继承自 NetworkBase。)
公共方法代码示例ConnectClose
在长连接模式下,断开服务器的连接,并切换到短连接模式
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共方法代码示例ConnectServer
切换短连接模式到长连接模式,后面的每次请求都共享一个通道
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共方法代码示例ConnectServer(AlienSession)
使用指定的套接字创建异形客户端
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
受保护的方法代码示例CreateSocketAndConnect(IPEndPoint, Int32)
创建一个新的socket对象并连接到远程的地址
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnect(String, Int32)
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnect(String, Int32, Int32)
创建一个新的socket对象并连接到远程的地址
(继承自 NetworkBase。)
公共方法Dispose
释放当前的资源
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
受保护的方法Dispose(Boolean)
释放当前的资源,并自动关闭长连接,如果设置了的话
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共方法Equals (继承自 Object。)
受保护的方法ExtraAfterReadFromCoreServer
和服务器交互完成的时候调用的方法,无论是成功或是失败,都将会调用,具体的操作需要重写实现
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
受保护的方法代码示例ExtraOnDisconnect
在将要和服务器进行断开的情况下额外的操作,需要根据对应协议进行重写
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
受保护的方法Finalize (继承自 Object。)
受保护的方法GetAvailableSocket
获取本次操作的可用的网络套接字
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共方法GetHashCode (继承自 Object。)
公共方法GetType (继承自 Object。)
受保护的方法InitializationOnConnect
连接上服务器后需要进行的初始化操作,无论是否允许操作都要进行验证
(重写 NetworkDoubleBaseTNetMessage, TTransformInitializationOnConnect(Socket).)
受保护的方法MemberwiseClone (继承自 Object。)
公共方法ReadCustomerFromServer(NetHandle, Byte)
客户端向服务器进行请求,请求字符串数据,并返回状态信息
公共方法ReadCustomerFromServer(NetHandle, String)
客户端向服务器进行请求,请求字符串数据,并返回状态信息
公共方法ReadCustomerFromServer(NetHandle, String)
客户端向服务器进行请求,请求字符串数据,并返回状态信息
公共方法ReadCustomerFromServerAsync(NetHandle, Byte)
客户端向服务器进行请求,请求字符串数据,并返回状态信息
公共方法ReadCustomerFromServerAsync(NetHandle, String)
客户端向服务器进行请求,请求字符串数据,并返回状态信息
公共方法ReadCustomerFromServerAsync(NetHandle, String)
客户端向服务器进行请求,请求字符串数据,并返回状态信息
公共方法代码示例ReadFromCoreServer(Byte)
使用底层的数据报文来通讯,传入需要发送的消息,返回一条完整的数据指令
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共方法代码示例ReadFromCoreServer(Socket, Byte)
在其他指定的套接字上,使用报文来通讯,传入需要发送的消息,返回一条完整的数据指令
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共方法ReadFromServer(NetHandle, Byte)
客户端向服务器进行请求,请求字节数据
公共方法ReadFromServer(NetHandle, String)
客户端向服务器进行请求,请求字符串数据,忽略了自定义消息反馈
公共方法ReadFromServer(NetHandle, String)
客户端向服务器进行请求,请求字符串数组,忽略了自定义消息反馈
公共方法ReadFromServerAsync(NetHandle, Byte)
客户端向服务器进行异步请求,请求字节数据
公共方法ReadFromServerAsync(NetHandle, String)
客户端向服务器进行异步请求,请求字符串数据
公共方法ReadFromServerAsync(NetHandle, String)
客户端向服务器进行异步请求,请求字符串数据
受保护的方法ReadStream
读取流中的数据到缓存区
(继承自 NetworkBase。)
受保护的方法Receive
接收固定长度的字节数组
(继承自 NetworkBase。)
受保护的方法ReceiveAndCheckBytes
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法ReceiveAsync
接收固定长度的字节数组
(继承自 NetworkBase。)
受保护的方法ReceiveByMessage
接收一条完整的 数据内容 -> Receive a complete data content
(继承自 NetworkBase。)
受保护的方法ReceiveBytesContentFromSocket(Socket)
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法ReceiveBytesContentFromSocket(Socket, Int32)
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法ReceiveStringArrayContentFromSocket
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法ReceiveStringContentFromSocket
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法Send
发送消息给套接字,直到完成的时候返回
(继承自 NetworkBase。)
受保护的方法SendAccountAndCheckReceive
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法SendAsync
发送一个异步的数据信息,该方式在NET35里是不可用的。
(继承自 NetworkBase。)
受保护的方法SendBaseAndCheckReceive
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法SendBytesAndCheckReceive
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceive(Socket, Int32, String)
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceive(Socket, Int32, String)
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
(继承自 NetworkBase。)
公共方法SetLoginAccount
设置当前的登录的账户名和密码信息,账户名为空时设置不生效
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
公共方法代码示例SetPersistentConnection
在读取数据之前可以调用本方法将客户端设置为长连接模式,相当于跳过了ConnectServer的结果验证,对异形客户端无效
(继承自 NetworkDoubleBaseTNetMessage, TTransform。)
受保护的方法ThreadPoolCheckTimeOut
检查网络套接字是否操作超时,需要对套接字进行封装
(继承自 NetworkBase。)
公共方法ToString
获取本对象的字符串表示形式
(重写 NetworkDoubleBaseTNetMessage, TTransformToString.)
受保护的方法WriteStream
将缓冲区的数据写入到流里面去
(继承自 NetworkBase。)
Top
字段
备注
详细的使用说明,请参照博客http://www.cnblogs.com/dathlin/p/7697782.html
示例
此处贴上了Demo项目的服务器配置的示例代码
FormSimplifyNet示例
public partial class FormSimplifyNet : HslFormContent
{
    public FormSimplifyNet( )
    {
        InitializeComponent( );
    }

    private void FormClient_Load( object sender, EventArgs e )
    {
        panel2.Enabled = false;
        textBox3.Text = Guid.Empty.ToString( );
        button2.Enabled = false;

        Language( Program.Language );

    }

    private void Language( int language )
    {
        if (language == 1)
        {
            Text = "Simplify网络客户端";
            label1.Text = "Ip地址:";
            label3.Text = "端口号:";
            button1.Text = "连接";
            button2.Text = "断开连接";
            label6.Text = "令牌:";
            button5.Text = "启动短连接";
            button6.Text = "压力测试";
            label7.Text = "指令头:";
            label8.Text = "举例:12345 或是1.1.1";
            label9.Text = "数据:";
            button3.Text = "发送";
            label10.Text = "次数:";
            label11.Text = "耗时:";
            button4.Text = "清空";
            label12.Text = "接收:";
        }
        else
        {
            Text = "Simplify Net Client Test";
            label1.Text = "Ip:";
            label3.Text = "Port:";
            button1.Text = "Connect";
            button2.Text = "Disconnect";
            label6.Text = "Token:";
            button5.Text = "Start a short connection";
            button6.Text = "Pressure test";
            label7.Text = "Command:";
            label8.Text = "Example: 12345 or 1.1.1";
            label9.Text = "Data:";
            button3.Text = "Send";
            label10.Text = "Times:";
            label11.Text = "Take:";
            button4.Text = "Clear";
            label12.Text = "Receive:";
        }
    }

    private NetSimplifyClient simplifyClient = new NetSimplifyClient( );

    private void button1_Click( object sender, EventArgs e )
    {
        // 连接
        simplifyClient.IpAddress = textBox1.Text;
        simplifyClient.Port = int.Parse( textBox2.Text );
        simplifyClient.ReceiveTimeOut = int.Parse( textBox11.Text );
        simplifyClient.Token = new Guid( textBox3.Text );
        simplifyClient.SetLoginAccount( textBox9.Text, textBox10.Text );
        OperateResult connect = simplifyClient.ConnectServer( );

        if(connect.IsSuccess)
        {
            button1.Enabled = false;
            button2.Enabled = true;
            panel2.Enabled = true;
            button5.Enabled = false;
            MessageBox.Show( StringResources.Language.ConnectServerSuccess );
        }
        else
        {
            MessageBox.Show( StringResources.Language.ConnectedFailed + connect.ToMessageShowString( ) );
        }
    }

    private void button2_Click( object sender, EventArgs e )
    {
        // 断开连接
        button5.Enabled = true;
        button1.Enabled = true;
        button2.Enabled = false;
        panel2.Enabled = false;

        simplifyClient.ConnectClose( );
    }

    private int status = 1;
    private void button5_Click( object sender, EventArgs e )
    {
        if (status == 1)
        {
            // 启动短连接
            simplifyClient.IpAddress = textBox1.Text;
            simplifyClient.Port = int.Parse( textBox2.Text );
            simplifyClient.Token = new Guid( textBox3.Text );

            button1.Enabled = false;
            button2.Enabled = false;
            panel2.Enabled = true;
            status = 2;
            button5.Text = Program.Language == 1 ? "重新选择连接" : "Choose again";
        }
        else
        {
            status = 1;
            button1.Enabled = true;
            panel2.Enabled = false;
            button5.Text = Program.Language == 1 ? "启动短连接" : "Start a short connection";
        }
    }

    private void button3_Click( object sender, EventArgs e )
    {
        // 数据发送
        NetHandle handle = new NetHandle( );
        if (textBox5.Text.IndexOf( '.' ) >= 0)
        {
            string[] values = textBox5.Text.Split( '.' );
            handle = new NetHandle( byte.Parse( values[0] ), byte.Parse( values[1] ), ushort.Parse( values[2] ) );
        }
        else
        {
            handle = int.Parse( textBox5.Text );
        }


        int count = int.Parse( textBox6.Text );
        DateTime start = DateTime.Now;
        for (int i = 0; i < count; i++)
        {
            OperateResult<string> read = simplifyClient.ReadFromServer( handle, textBox4.Text );
            if (read.IsSuccess)
            {
                textBox8.AppendText( read.Content + Environment.NewLine );
            }
            else
            {
                MessageBox.Show( Program.Language == 1 ? "读取失败:" : "Read Failed:" + read.ToMessageShowString( ) );
            }
        }

        textBox7.Text = (DateTime.Now - start).TotalMilliseconds.ToString( "F2" );

    }

    private void button4_Click( object sender, EventArgs e )
    {
        // 清空
        textBox8.Clear( );
    }

    private void Button7_Click( object sender, EventArgs e )
    {
        // 数据发送
        NetHandle handle = new NetHandle( );
        if (textBox5.Text.IndexOf( '.' ) >= 0)
        {
            string[] values = textBox5.Text.Split( '.' );
            handle = new NetHandle( byte.Parse( values[0] ), byte.Parse( values[1] ), ushort.Parse( values[2] ) );
        }
        else
        {
            handle = int.Parse( textBox5.Text );
        }


        int count = int.Parse( textBox6.Text );
        DateTime start = DateTime.Now;
        for (int i = 0; i < count; i++)
        {
            OperateResult<NetHandle,string[]> read = simplifyClient.ReadCustomerFromServer( handle, textBox4.Text.Split(new char[] { ';' } ) );
            if (read.IsSuccess)
            {
                textBox8.Lines = read.Content2;
            }
            else
            {
                MessageBox.Show( Program.Language == 1 ? "读取失败:" : "Read Failed:" + read.ToMessageShowString( ) );
            }
        }

        textBox7.Text = (DateTime.Now - start).TotalMilliseconds.ToString( "F2" );
    }
}
参见