点击或拖拽改变大小

MqttSyncClient 类

基于MQTT协议的同步访问的客户端程序,支持以同步的方式访问服务器的数据信息,并及时的反馈结果,当服务器启动文件功能时,也支持文件的上传,下载,删除操作等。
The client program based on MQTT protocol for synchronous access supports synchronous access to the server's data information and timely feedback of results, When the server starts the file function, it also supports file upload, download, and delete operations.
继承层次

命名空间:  HslCommunication.MQTT
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:10.4.3.0 (10.4.3.0)
语法
public class MqttSyncClient : NetworkDoubleBase

MqttSyncClient 类型公开以下成员。

构造函数
  名称说明
公共方法MqttSyncClient(MqttConnectionOptions)
实例化一个MQTT的同步客户端
Instantiate an MQTT synchronization client
公共方法MqttSyncClient(IPAddress, Int32)
通过指定的ip地址及端口来实例化一个同步的MQTT客户端
Instantiate a synchronized MQTT client with the specified IP address and port
公共方法MqttSyncClient(String, Int32)
通过指定的ip地址及端口来实例化一个同步的MQTT客户端
Instantiate a synchronized MQTT client with the specified IP address and port
Top
属性
  名称说明
公共属性AlienSession
当前的异形连接对象,如果设置了异形连接的话,仅用于异形模式的情况使用
The current alien connection object, if alien connection is set, is only used in the case of alien mode
(继承自 NetworkDoubleBase。)
公共属性代码示例ByteTransform
当前的数据变换机制,当你需要从字节数据转换类型数据的时候需要。
The current data transformation mechanism is required when you need to convert type data from byte data.
(继承自 NetworkDoubleBase。)
公共属性ConnectionId
当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定
The unique ID number of the current connection. The default is a 20-digit guid code plus a random number.
(继承自 NetworkDoubleBase。)
公共属性ConnectionOptions
获取或设置当前的连接信息,客户端将根据这个连接配置进行连接服务器,在连接之前需要设置相关的信息才有效。
To obtain or set the current connection information, the client will connect to the server according to this connection configuration. Before connecting, the relevant information needs to be set to be effective.
公共属性代码示例ConnectTimeOut
获取或设置连接的超时时间,单位是毫秒
Gets or sets the timeout for the connection, in milliseconds
(继承自 NetworkDoubleBase。)
公共属性代码示例IpAddress
获取或是设置远程服务器的IP地址,如果是本机测试,那么需要设置为127.0.0.1
Get or set the IP address of the remote server. If it is a local test, then it needs to be set to 127.0.0.1
(继承自 NetworkDoubleBase。)
公共属性LocalBinding
获取或设置绑定的本地的IP地址和端口号信息,如果端口设置为0,代表任何可用的端口
Get or set the bound local IP address and port number information, if the port is set to 0, it means any available port
(继承自 NetworkDoubleBase。)
公共属性代码示例LogNet
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以DEBUG等级进行输出
The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at DEBUG
(继承自 NetworkBase。)
公共属性代码示例Port
获取或设置服务器的端口号,具体的值需要取决于对方的配置
Gets or sets the port number of the server. The specific value depends on the configuration of the other party.
(继承自 NetworkDoubleBase。)
公共属性代码示例ReceiveTimeOut
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈
Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback
(继承自 NetworkDoubleBase。)
公共属性SleepTime
获取或设置在正式接收对方返回数据前的时候,需要休息的时间,当设置为0的时候,不需要休息。
Get or set the time required to rest before officially receiving the data from the other party. When it is set to 0, no rest is required.
(继承自 NetworkDoubleBase。)
公共属性StringEncoding
获取或设置使用字符串访问的时候,使用的编码信息,默认为UT8编码
Get or set the encoding information used when accessing with a string, the default is UT8 encoding
公共属性代码示例Token
网络类的身份令牌,在hsl协议的模式下会有效,在和设备进行通信的时候是无效的
Network-type identity tokens will be valid in the hsl protocol mode and will not be valid when communicating with the device
(继承自 NetworkBase。)
Top
方法
  名称说明
受保护的方法AccountCertificate
认证账号,根据已经设置的用户名和密码,进行发送服务器进行账号认证。
Authentication account, according to the user name and password that have been set, sending server for account authentication.
(继承自 NetworkDoubleBase。)
受保护的方法AccountCertificateAsync
认证账号,根据已经设置的用户名和密码,进行发送服务器进行账号认证。
Authentication account, according to the user name and password that have been set, sending server for account authentication.
(继承自 NetworkDoubleBase。)
受保护的方法CheckRemoteToken
检查当前的头子节信息的令牌是否是正确的,仅用于某些特殊的协议实现
Check whether the token of the current header subsection information is correct, only for some special protocol implementations
(继承自 NetworkBase。)
公共方法代码示例ConnectClose
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
(继承自 NetworkDoubleBase。)
公共方法代码示例ConnectCloseAsync
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
(继承自 NetworkDoubleBase。)
公共方法代码示例ConnectServer
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
Try to connect to a remote server. If the connection is successful, switch the short connection mode to the long connection mode. Each subsequent request will share a channel, making the communication speed faster.
(继承自 NetworkDoubleBase。)
公共方法代码示例ConnectServer(AlienSession)
使用指定的套接字创建异形客户端,在异形客户端的模式下,网络通道需要被动创建。
Use the specified socket to create the alien client. In the alien client mode, the network channel needs to be created passively.
(继承自 NetworkDoubleBase。)
公共方法代码示例ConnectServerAsync
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
Try to connect to a remote server. If the connection is successful, switch the short connection mode to the long connection mode. Each subsequent request will share a channel, making the communication speed faster.
(继承自 NetworkDoubleBase。)
受保护的方法代码示例CreateSocketAndConnect(String, Int32)
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟,需要指定ip地址以及端口号信息
Create a new socket object and connect to the remote address. The default timeout is 10 seconds. You need to specify the IP address and port number.
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnect(IPEndPoint, Int32, IPEndPoint)
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒),如果需要绑定本地的IP或是端口,传入 local对象
To create a new socket object and connect to the remote address, you need to specify the remote endpoint, the timeout period (in milliseconds), if you need to bind the local IP or port, pass in the local object
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnect(String, Int32, Int32)
创建一个新的socket对象并连接到远程的地址,需要指定ip地址以及端口号信息,还有超时时间,单位是毫秒
To create a new socket object and connect to a remote address, you need to specify the IP address and port number information, and the timeout period in milliseconds
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnectAsync(String, Int32)
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟,需要指定ip地址以及端口号信息
Create a new socket object and connect to the remote address. The default timeout is 10 seconds. You need to specify the IP address and port number.
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnectAsync(IPEndPoint, Int32, IPEndPoint)
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒),如果需要绑定本地的IP或是端口,传入 local对象
To create a new socket object and connect to the remote address, you need to specify the remote endpoint, the timeout period (in milliseconds), if you need to bind the local IP or port, pass in the local object
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnectAsync(String, Int32, Int32)
创建一个新的socket对象并连接到远程的地址,需要指定ip地址以及端口号信息,还有超时时间,单位是毫秒
To create a new socket object and connect to a remote address, you need to specify the IP address and port number information, and the timeout period in milliseconds
(继承自 NetworkBase。)
公共方法DeleteFile(String, String)
删除服务器的指定的文件名,需要指定分类信息,文件名
Delete the specified file name of the server, need to specify the classification information, file name
公共方法DeleteFile(String, String)
删除服务器的指定的文件名,需要指定分类信息,文件名
Delete the specified file name of the server, need to specify the classification information, file name
公共方法DeleteFileAsync(String, String)
删除服务器的指定的文件名,需要指定分类信息,文件名
Delete the specified file name of the server, need to specify the classification information, file name
公共方法DeleteFileAsync(String, String)
删除服务器的指定的文件名,需要指定分类信息,文件名
Delete the specified file name of the server, need to specify the classification information, file name
受保护的方法DeleteFileByName
删除文件的操作
Delete file operation
(继承自 NetworkBase。)
公共方法DeleteFolderFiles
删除服务器上指定的分类信息及管理的所有的文件,包含所有的子分类信息,不可逆操作,谨慎操作。
Delete the specified classification information and all files managed on the server, including all sub-classification information, irreversible operation, and careful operation.
公共方法DeleteFolderFilesAsync
删除服务器上指定的分类信息及管理的所有的文件,包含所有的子分类信息,不可逆操作,谨慎操作。
Delete the specified classification information and all files managed on the server, including all sub-classification information, irreversible operation, and careful operation.
公共方法Dispose
释放当前的资源,如果调用了本方法,那么该对象再使用的时候,需要重新实例化。
Release the current resource. If this method is called, the object needs to be instantiated again when it is used again.
(继承自 NetworkDoubleBase。)
受保护的方法Dispose(Boolean)
释放当前的资源,并自动关闭长连接,如果设置了的话
(继承自 NetworkDoubleBase。)
公共方法DownloadBitmap
从远程服务器下载一个文件,生成一个Bitmap图片对象,需要指定文件类别,文件名,进度报告,可用于用户头像的存储
Download a file from a remote server and generate a Bitmap image object. You need to specify the file category, file name, and progress report, which can be used to store the user's avatar
公共方法DownloadBitmapAsync
从远程服务器下载一个文件,生成一个Bitmap图片对象,需要指定文件类别,文件名,进度报告,可用于用户头像的存储
Download a file from a remote server and generate a Bitmap image object. You need to specify the file category, file name, and progress report, which can be used to store the user's avatar
公共方法DownloadFile(String, String, ActionInt64, Int64, Stream)
从远程服务器下载一个文件到流中,需要指定文件类别,文件名,进度报告,本地保存的文件名
To download a file from a remote server to the stream, you need to specify the file category, file name, progress report, and file name saved locally
公共方法DownloadFile(String, String, ActionInt64, Int64, String)
从远程服务器下载一个文件到本地,需要指定文件类别,文件名,进度报告,本地保存的文件名
To download a file from a remote server to the local, you need to specify the file category, file name, progress report, and file name saved locally
公共方法DownloadFileAsync(String, String, ActionInt64, Int64, Stream)
从远程服务器下载一个文件到流中,需要指定文件类别,文件名,进度报告,本地保存的文件名
To download a file from a remote server to the stream, you need to specify the file category, file name, progress report, and file name saved locally
公共方法DownloadFileAsync(String, String, ActionInt64, Int64, String)
从远程服务器下载一个文件到本地,需要指定文件类别,文件名,进度报告,本地保存的文件名
To download a file from a remote server to the local, you need to specify the file category, file name, progress report, and file name saved locally
公共方法DownloadPathFileNames
下载指定分类信息的所有的文件描述信息,需要指定分类信息,例如:Files/Personal/Admin
To download all the file description information of the specified classification information, you need to specify the classification information, for example: Files/Personal/Admin
公共方法DownloadPathFileNamesAsync
下载指定分类信息的所有的文件描述信息,需要指定分类信息,例如:Files/Personal/Admin
To download all the file description information of the specified classification information, you need to specify the classification information, for example: Files/Personal/Admin
公共方法DownloadPathFolders
下载指定分类信息的全部子分类信息
Download all sub-category information of the specified category information
公共方法DownloadPathFoldersAsync
下载指定分类信息的全部子分类信息
Download all sub-category information of the specified category information
公共方法Equals (继承自 Object。)
受保护的方法ExtraAfterReadFromCoreServer
和服务器交互完成的时候调用的方法,可以根据读写结果进行一些额外的操作,具体的操作需要根据实际的需求来重写实现
The method called when the interaction with the server is completed can perform some additional operations based on the read and write results. The specific operations need to be rewritten according to actual needs.
(继承自 NetworkDoubleBase。)
受保护的方法代码示例ExtraOnDisconnect
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
Select whether to rewrite this method according to the actual protocol. Some protocols need to send some packets to close the current network channel before disconnecting.
(继承自 NetworkDoubleBase。)
受保护的方法代码示例ExtraOnDisconnectAsync
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
Select whether to rewrite this method according to the actual protocol. Some protocols need to send some packets to close the current network channel before disconnecting.
(继承自 NetworkDoubleBase。)
受保护的方法Finalize (继承自 Object。)
受保护的方法GetAvailableSocket
获取本次操作的可用的网络通道,如果是短连接,就重新生成一个新的网络通道,如果是长连接,就复用当前的网络通道。
Obtain the available network channels for this operation. If it is a short connection, a new network channel is regenerated. If it is a long connection, the current network channel is reused.
(继承自 NetworkDoubleBase。)
受保护的方法GetAvailableSocketAsync
获取本次操作的可用的网络通道,如果是短连接,就重新生成一个新的网络通道,如果是长连接,就复用当前的网络通道。
Obtain the available network channels for this operation. If it is a short connection, a new network channel is regenerated. If it is a long connection, the current network channel is reused.
(继承自 NetworkDoubleBase。)
公共方法GetGroupFileInfo
获取服务器文件夹的指定目录的文件统计信息,包括文件数量,总大小,最后更新时间
Get the file statistics of the specified directory of the server folder, including the number of files, the total size, and the last update time
公共方法GetGroupFileInfoAsync
获取服务器文件夹的指定目录的文件统计信息,包括文件数量,总大小,最后更新时间
Get the file statistics of the specified directory of the server folder, including the number of files, the total size, and the last update time
公共方法GetHashCode (继承自 Object。)
受保护的方法GetNewNetMessage
获取一个新的消息对象的方法,需要在继承类里面进行重写
The method to get a new message object needs to be overridden in the inheritance class
(继承自 NetworkDoubleBase。)
公共方法GetSubGroupFileInfos
获取服务器文件夹的指定目录的所有子目录的文件信息,包括每个子目录的文件数量,总大小,最后更新时间
Get the file information of all subdirectories of the specified directory of the server folder, including the number of files in each subdirectory, the total size, and the last update time
公共方法GetSubGroupFileInfosAsync
获取服务器文件夹的指定目录的所有子目录的文件信息,包括每个子目录的文件数量,总大小,最后更新时间
Get the file information of all subdirectories of the specified directory of the server folder, including the number of files in each subdirectory, the total size, and the last update time
公共方法GetType (继承自 Object。)
受保护的方法代码示例InitializationOnConnect
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
Whether to rewrite this method is based on the actual protocol. Some protocols require some initial signal handshake to establish a network channel after the connection is created.
(重写 NetworkDoubleBaseInitializationOnConnect(Socket).)
受保护的方法代码示例InitializationOnConnectAsync
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
Whether to rewrite this method is based on the actual protocol. Some protocols require some initial signal handshake to establish a network channel after the connection is created.
(重写 NetworkDoubleBaseInitializationOnConnectAsync(Socket).)
公共方法IpAddressPing
对当前设备的IP地址进行PING的操作,返回PING的结果,正常来说,返回Success
PING the IP address of the current device and return the PING result. Normally, it returns Success
(继承自 NetworkDoubleBase。)
公共方法IsFileExists
请求服务器指定分类是否存在指定的文件名,需要指定分类信息,文件名
Request the server to specify whether the specified file name exists in the specified category, need to specify the category information, file name
公共方法IsFileExistsAsync
请求服务器指定分类是否存在指定的文件名,需要指定分类信息,文件名
Request the server to specify whether the specified file name exists in the specified category, need to specify the category information, file name
受保护的方法MemberwiseClone (继承自 Object。)
受保护的方法PackCommandWithHeader
对当前的命令进行打包处理,通常是携带命令头内容,标记当前的命令的长度信息,需要进行重写,否则默认不打包
The current command is packaged, usually carrying the content of the command header, marking the length of the current command, and it needs to be rewritten, otherwise it is not packaged by default
(继承自 NetworkDoubleBase。)
受保护的方法PreprocessFolderName
预处理文件夹的名称,除去文件夹名称最后一个'\'或'/',如果有的话
Preprocess the name of the folder, removing the last '\' or '/' in the folder name
(继承自 NetworkBase。)
公共方法Read
从MQTT服务器同步读取数据,将payload发送到服务器,然后从服务器返回相关的数据,支持数据发送进度报告,服务器执行进度报告,接收数据进度报告操作
Synchronously read data from the MQTT server, send the payload to the server, and then return relevant data from the server, support data transmission progress report, the server executes the progress report, and receives the data progress report
公共方法ReadAsync
从MQTT服务器同步读取数据,将payload发送到服务器,然后从服务器返回相关的数据,支持数据发送进度报告,服务器执行进度报告,接收数据进度报告操作
Synchronously read data from the MQTT server, send the payload to the server, and then return relevant data from the server, support data transmission progress report, the server executes the progress report, and receives the data progress report
公共方法代码示例ReadFromCoreServer(Byte)
将数据发送到当前的网络通道中,并从网络通道中接收一个INetMessage指定的完整的报文,网络通道将根据GetAvailableSocket方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by INetMessage from the network channel. The network channel will be automatically obtained according to the GetAvailableSocket method This method is thread-safe.
(继承自 NetworkDoubleBase。)
公共方法代码示例ReadFromCoreServer(Byte, Boolean, Boolean)
将数据发送到当前的网络通道中,并从网络通道中接收一个INetMessage指定的完整的报文,网络通道将根据GetAvailableSocket方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by INetMessage from the network channel. The network channel will be automatically obtained according to the GetAvailableSocket method This method is thread-safe.
(继承自 NetworkDoubleBase。)
公共方法代码示例ReadFromCoreServer(Socket, Byte, Boolean, Boolean)
将数据报文发送指定的网络通道上,根据当前指定的INetMessage类型,返回一条完整的数据指令
Sends a data message to the specified network channel, and returns a complete data command according to the currently specified INetMessage type
(重写 NetworkDoubleBaseReadFromCoreServer(Socket, Byte, Boolean, Boolean).)
公共方法代码示例ReadFromCoreServerAsync(Byte)
将数据发送到当前的网络通道中,并从网络通道中接收一个INetMessage指定的完整的报文,网络通道将根据GetAvailableSocket方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by INetMessage from the network channel. The network channel will be automatically obtained according to the GetAvailableSocket method This method is thread-safe.
(继承自 NetworkDoubleBase。)
公共方法代码示例ReadFromCoreServerAsync(Byte, Boolean, Boolean)
将数据发送到当前的网络通道中,并从网络通道中接收一个INetMessage指定的完整的报文,网络通道将根据GetAvailableSocket方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by INetMessage from the network channel. The network channel will be automatically obtained according to the GetAvailableSocket method This method is thread-safe.
(继承自 NetworkDoubleBase。)
公共方法代码示例ReadFromCoreServerAsync(Socket, Byte, Boolean, Boolean)
将数据报文发送指定的网络通道上,根据当前指定的INetMessage类型,返回一条完整的数据指令
Sends a data message to the specified network channel, and returns a complete data command according to the currently specified INetMessage type
(重写 NetworkDoubleBaseReadFromCoreServerAsync(Socket, Byte, Boolean, Boolean).)
公共方法ReadRetainTopics
读取服务器的已经驻留的所有消息的主题列表
Read the topic list of all messages that have resided on the server
公共方法ReadRetainTopicsAsync
读取服务器的已经驻留的所有消息的主题列表
Read the topic list of all messages that have resided on the server
公共方法ReadRpcT(String, Object)
读取MQTT服务器注册的RPC接口,忽略返回的Topic数据,直接将结果转换为泛型对象,如果JSON转换失败,将返回错误,参数传递主题和数据负载, 数据负载示例:new { address = "", length = 0 } 本质是一个匿名对象。
Read the RPC interface registered by the MQTT server, ignore the returned Topic data, and directly convert the result into a generic object. If the JSON conversion fails, an error will be returned. The parameter passes the topic and the data payload. The data payload example: new { address = "", length = 0 } is essentially an anonymous object.
公共方法ReadRpcT(String, String)
读取MQTT服务器注册的RPC接口,忽略返回的Topic数据,直接将结果转换为泛型对象,如果JSON转换失败,将返回错误,参数传递主题和数据负载, 数据负载示例:"{\"address\": \"100\",\"length\": 10}" 本质是一个字符串。
Read the RPC interface registered by the MQTT server, ignore the returned Topic data, and directly convert the result into a generic object. If the JSON conversion fails, an error will be returned. The parameter passes the topic and the data payload. The data payload example: "{\"address\ ": \"100\",\"length\": 10}" is essentially a string.
公共方法ReadRpcApiLog
读取服务器的指定的API接口的每天的调用次数,如果API接口不存在,或是还没有调用数据,则返回失败。
Read the number of calls per day of the designated API interface of the server. If the API interface does not exist or the data has not been called yet, it returns a failure.
公共方法ReadRpcApiLogAsync
读取服务器的指定的API接口的每天的调用次数,如果API接口不存在,或是还没有调用数据,则返回失败。
Read the number of calls per day of the designated API interface of the server. If the API interface does not exist or the data has not been called yet, it returns a failure.
公共方法ReadRpcApis
读取服务器的已经注册的API信息列表,将返回API的主题路径,注释信息,示例的传入的数据信息。
Read the registered API information list of the server, and return the API subject path, annotation information, and sample incoming data information.
公共方法ReadRpcApisAsync
读取服务器的已经注册的API信息列表,将返回API的主题路径,注释信息,示例的传入的数据信息。
Read the registered API information list of the server, and return the API subject path, annotation information, and sample incoming data information.
公共方法ReadRpcAsyncT(String, Object)
读取MQTT服务器注册的RPC接口,忽略返回的Topic数据,直接将结果转换为泛型对象,如果JSON转换失败,将返回错误,参数传递主题和数据负载, 数据负载示例:new { address = "", length = 0 } 本质是一个匿名对象。
Read the RPC interface registered by the MQTT server, ignore the returned Topic data, and directly convert the result into a generic object. If the JSON conversion fails, an error will be returned. The parameter passes the topic and the data payload. The data payload example: new { address = "", length = 0 } is essentially an anonymous object.
公共方法ReadRpcAsyncT(String, String)
读取MQTT服务器注册的RPC接口,忽略返回的Topic数据,直接将结果转换为泛型对象,如果JSON转换失败,将返回错误,参数传递主题和数据负载, 数据负载示例:"{\"address\": \"100\",\"length\": 10}" 本质是一个字符串。
Read the RPC interface registered by the MQTT server, ignore the returned Topic data, and directly convert the result into a generic object. If the JSON conversion fails, an error will be returned. The parameter passes the topic and the data payload. The data payload example: "{\"address\ ": \"100\",\"length\": 10}" is essentially a string.
受保护的方法ReadStream
读取流中的数据到缓存区,读取的长度需要按照实际的情况来判断
Read the data in the stream to the buffer area. The length of the read needs to be determined according to the actual situation.
(继承自 NetworkBase。)
受保护的方法ReadStreamAsync
读取流中的数据到缓存区,读取的长度需要按照实际的情况来判断
Read the data in the stream to the buffer area. The length of the read needs to be determined according to the actual situation.
(继承自 NetworkBase。)
公共方法ReadString
从MQTT服务器同步读取数据,将指定编码的字符串payload发送到服务器,然后从服务器返回相关的数据,并转换为指定编码的字符串,支持数据发送进度报告,服务器执行进度报告,接收数据进度报告操作
Synchronously read data from the MQTT server, send the specified encoded string payload to the server, and then return the data from the server, and convert it to the specified encoded string, support data transmission progress report, the server executes the progress report, and receives the data progress report
公共方法ReadStringAsync
从MQTT服务器同步读取数据,将指定编码的字符串payload发送到服务器,然后从服务器返回相关的数据,并转换为指定编码的字符串,支持数据发送进度报告,服务器执行进度报告,接收数据进度报告操作
Synchronously read data from the MQTT server, send the specified encoded string payload to the server, and then return the data from the server, and convert it to the specified encoded string, support data transmission progress report, the server executes the progress report, and receives the data progress report
公共方法ReadTopicPayload
读取服务器的已经驻留的指定主题的消息内容
Read the topic list of all messages that have resided on the server
公共方法ReadTopicPayloadAsync
读取服务器的已经驻留的指定主题的消息内容
Read the topic list of all messages that have resided on the server
受保护的方法Receive(Socket, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法Receive(Socket, Byte, Int32, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法ReceiveAndCheckBytes
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯
[Self-checking] Receive a complete synchronization data, including header subsection and content bytes, basic data, if the result is abnormal, the communication ends
(继承自 NetworkBase。)
受保护的方法ReceiveAndCheckBytesAsync
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯
[Self-checking] Receive a complete synchronization data, including header subsection and content bytes, basic data, if the result is abnormal, the communication ends
(继承自 NetworkBase。)
受保护的方法ReceiveAsync(Socket, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法ReceiveAsync(Socket, Byte, Int32, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法ReceiveByMessage
接收一条完整的 数据内容,需要指定超时时间,单位为毫秒。
Receive a complete data content, Need to specify a timeout period in milliseconds
(继承自 NetworkBase。)
受保护的方法ReceiveByMessageAsync
接收一条完整的 数据内容,需要指定超时时间,单位为毫秒。
Receive a complete data content, Need to specify a timeout period in milliseconds
(继承自 NetworkBase。)
受保护的方法ReceiveBytesContentFromSocket
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of byte data from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveBytesContentFromSocketAsync
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of byte data from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveCommandLineFromSocket(Socket, Byte, Int32)
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
(继承自 NetworkBase。)
受保护的方法ReceiveCommandLineFromSocket(Socket, Byte, Byte, Int32)
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
(继承自 NetworkBase。)
受保护的方法ReceiveCommandLineFromSocketAsync(Socket, Byte, Int32)
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
(继承自 NetworkBase。)
受保护的方法ReceiveCommandLineFromSocketAsync(Socket, Byte, Byte, Int32)
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
(继承自 NetworkBase。)
受保护的方法ReceiveFrameWebSocketPayload
从socket接收一条WebSocketMessage片段数据,返回WebSocketMessage的数据信息和是否最后一条数据内容
Receive a piece of WebSocketMessage fragment data from the socket, return the data information of WebSocketMessage and whether the last data content
(继承自 NetworkBase。)
受保护的方法ReceiveFrameWebSocketPayloadAsync
从socket接收一条WebSocketMessage片段数据,返回WebSocketMessage的数据信息和是否最后一条数据内容
Receive a piece of WebSocketMessage fragment data from the socket, return the data information of WebSocketMessage and whether the last data content
(继承自 NetworkBase。)
受保护的方法ReceiveHslMessage
接收一条hsl协议的数据信息,自动解析,解压,解码操作,获取最后的实际的数据,接收结果依次为暗号,用户码,负载数据
Receive a piece of hsl protocol data information, automatically parse, decompress, and decode operations to obtain the last actual data. The result is a opCode, user code, and payload data in order.
(继承自 NetworkBase。)
受保护的方法ReceiveHslMessageAsync
接收一条hsl协议的数据信息,自动解析,解压,解码操作,获取最后的实际的数据,接收结果依次为暗号,用户码,负载数据
Receive a piece of hsl protocol data information, automatically parse, decompress, and decode operations to obtain the last actual data. The result is a opCode, user code, and payload data in order.
(继承自 NetworkBase。)
受保护的方法ReceiveMqttFile
使用MQTT协议从网络接收字节数组,然后写入文件或流中,支持进度报告
Use MQTT protocol to receive byte array from the network, and then write it to file or stream, support progress report
(继承自 NetworkBase。)
受保护的方法ReceiveMqttFileAsync
使用MQTT协议从网络接收字节数组,然后写入文件或流中,支持进度报告
Use MQTT protocol to receive byte array from the network, and then write it to file or stream, support progress report
(继承自 NetworkBase。)
受保护的方法ReceiveMqttMessage
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据
Receive a message of a completed MQTT protocol, including control code and payload data
(继承自 NetworkBase。)
受保护的方法ReceiveMqttMessageAsync
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据
Receive a message of a completed MQTT protocol, including control code and payload data
(继承自 NetworkBase。)
受保护的方法ReceiveMqttStream
使用MQTT协议从socket接收指定长度的字节数组,然后全部写入到流中,可以指定进度报告
Use the MQTT protocol to receive a byte array of specified length from the socket, and then write all of them to the stream, and you can specify a progress report
(继承自 NetworkBase。)
受保护的方法ReceiveMqttStreamAsync
使用MQTT协议从socket接收指定长度的字节数组,然后全部写入到流中,可以指定进度报告
Use the MQTT protocol to receive a byte array of specified length from the socket, and then write all of them to the stream, and you can specify a progress report
(继承自 NetworkBase。)
受保护的方法ReceiveRedisCommand
从网络接收一条完整的redis报文的消息
Receive a complete redis message from the network
(继承自 NetworkBase。)
受保护的方法ReceiveRedisCommandAsync
从网络接收一条完整的redis报文的消息
Receive a complete redis message from the network
(继承自 NetworkBase。)
受保护的方法ReceiveRedisCommandString
接收一行基于redis协议的字符串的信息,需要指定固定的长度
Receive a line of information based on the redis protocol string, you need to specify a fixed length
(继承自 NetworkBase。)
受保护的方法ReceiveRedisCommandStringAsync
接收一行基于redis协议的字符串的信息,需要指定固定的长度
Receive a line of information based on the redis protocol string, you need to specify a fixed length
(继承自 NetworkBase。)
受保护的方法ReceiveStringArrayContentFromSocket
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯
[Self-check] Receive an array of strings from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveStringArrayContentFromSocketAsync
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯
[Self-check] Receive an array of strings from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveStringContentFromSocket
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of data from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveStringContentFromSocketAsync
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of data from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveVigorMessage
从Socket接收一条VigorPLC的消息数据信息,指定套接字对象及超时时间
(继承自 NetworkBase。)
受保护的方法ReceiveVigorMessageAsync
从Socket接收一条VigorPLC的消息数据信息,指定套接字对象及超时时间
(继承自 NetworkBase。)
受保护的方法ReceiveWebSocketPayload
从socket接收一条完整的websocket数据,返回WebSocketMessage的数据信息
Receive a complete websocket data from the socket, return the data information of the WebSocketMessage
(继承自 NetworkBase。)
受保护的方法ReceiveWebSocketPayloadAsync
从socket接收一条完整的websocket数据,返回WebSocketMessage的数据信息
Receive a complete websocket data from the socket, return the data information of the WebSocketMessage
(继承自 NetworkBase。)
受保护的方法Send(Socket, Byte)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法Send(Socket, Byte, Int32, Int32)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法SendAccountAndCheckReceive
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendAccountAndCheckReceiveAsync
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendAsync(Socket, Byte)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法SendAsync(Socket, Byte, Int32, Int32)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法SendBaseAndCheckReceive
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendBaseAndCheckReceiveAsync
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendBytesAndCheckReceive
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendBytesAndCheckReceiveAsync
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendMqttFile(Socket, Stream, String, String, ActionInt64, Int64, AesCryptography)
使用MQTT协议将一个数据流发送到网络上去,需要保存的文件名,可选指定文件描述信息,进度报告
Use the MQTT protocol to send a data stream to the network, the file name that needs to be saved, optional file description information, progress report
(继承自 NetworkBase。)
受保护的方法SendMqttFile(Socket, String, String, String, ActionInt64, Int64, AesCryptography)
使用MQTT协议将一个文件发送到网络上去,需要指定文件名,保存的文件名,可选指定文件描述信息,进度报告
To send a file to the network using the MQTT protocol, you need to specify the file name, the saved file name, optionally specify the file description information, and the progress report
(继承自 NetworkBase。)
受保护的方法SendMqttFileAsync(Socket, Stream, String, String, ActionInt64, Int64, AesCryptography)
使用MQTT协议将一个数据流发送到网络上去,需要保存的文件名,可选指定文件描述信息,进度报告
Use the MQTT protocol to send a data stream to the network, the file name that needs to be saved, optional file description information, progress report
(继承自 NetworkBase。)
受保护的方法SendMqttFileAsync(Socket, String, String, String, ActionInt64, Int64, AesCryptography)
使用MQTT协议将一个文件发送到网络上去,需要指定文件名,保存的文件名,可选指定文件描述信息,进度报告
To send a file to the network using the MQTT protocol, you need to specify the file name, the saved file name, optionally specify the file description information, and the progress report
(继承自 NetworkBase。)
受保护的方法SendMqttStream
使用MQTT协议将流中的数据读取到字节数组,然后都写入到socket里面,可以指定进度报告,主要用于将文件发送到网络。
Use the MQTT protocol to read the data in the stream into a byte array, and then write them all into the socket. You can specify a progress report, which is mainly used to send files to the network.
(继承自 NetworkBase。)
受保护的方法SendMqttStreamAsync
使用MQTT协议将流中的数据读取到字节数组,然后都写入到socket里面,可以指定进度报告,主要用于将文件发送到网络。
Use the MQTT protocol to read the data in the stream into a byte array, and then write them all into the socket. You can specify a progress report, which is mainly used to send files to the network.
(继承自 NetworkBase。)
受保护的方法SendStreamToSocket
发送一个流的所有数据到指定的网络套接字,需要指定发送的数据长度,支持按照百分比的进度报告
Send all the data of a stream to the specified network socket. You need to specify the length of the data to be sent. It supports the progress report in percentage.
(继承自 NetworkBase。)
受保护的方法SendStreamToSocketAsync
发送一个流的所有数据到指定的网络套接字,需要指定发送的数据长度,支持按照百分比的进度报告
Send all the data of a stream to the specified network socket. You need to specify the length of the data to be sent. It supports the progress report in percentage.
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceive(Socket, Int32, String)
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-checking] Send string data directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceive(Socket, Int32, String)
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceiveAsync(Socket, Int32, String)
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-checking] Send string data directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceiveAsync(Socket, Int32, String)
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
公共方法SetLoginAccount
设置当前的登录的账户名和密码信息,并启用账户验证的功能,账户名为空时设置不生效
Set the current login account name and password information, and enable the account verification function. The account name setting will not take effect when it is empty
(继承自 NetworkDoubleBase。)
公共方法代码示例SetPersistentConnection
在读取数据之前可以调用本方法将客户端设置为长连接模式,相当于跳过了ConnectServer的结果验证,对异形客户端无效,当第一次进行通信时再进行创建连接请求。
Before reading the data, you can call this method to set the client to the long connection mode, which is equivalent to skipping the result verification of ConnectServer, and it is invalid for the alien client. When the first communication is performed, the connection creation request is performed.
(继承自 NetworkDoubleBase。)
公共方法SetPipeSocket
设置一个新的网络管道,一般来说不需要调用本方法,当多个网口设备共用一个网络连接时才需要使用本方法进行设置共享的管道。
To set up a new network channel, generally speaking, you do not need to call this method. This method is only needed to set up a shared channel when multiple network port devices share a network connection.
(继承自 NetworkDoubleBase。)
公共方法ToString (重写 NetworkDoubleBaseToString.)
受保护的方法UnpackResponseContent
根据对方返回的报文命令,对命令进行基本的拆包,例如各种Modbus协议拆包为统一的核心报文,还支持对报文的验证
According to the message command returned by the other party, the command is basically unpacked, for example, various Modbus protocols are unpacked into a unified core message, and the verification of the message is also supported
(继承自 NetworkDoubleBase。)
公共方法UploadFile(String, String, String, ActionInt64, Int64)
上传文件给服务器,需要指定上传文件的路径信息(服务器保存的名称就是文件名),以及上传到服务器的分类信息,支持进度汇报功能。
To upload a file to the server, you need to specify the path information of the uploaded file (the name saved by the server is the file name), as well as the classification information uploaded to the server, to support the progress report function.
公共方法UploadFile(Bitmap, String, String, String, ActionInt64, Int64)
上传一个Bitmap图片对象到服务器指定的分类下面,需要指定分类信息,服务器保存的文件名,描述信息,支持进度报告
Upload a Bitmap image object to the category specified by the server, you need to specify the category information, the file name saved by the server, description information, and support for progress reports
公共方法UploadFile(String, String, String, String, ActionInt64, Int64)
上传文件给服务器,需要指定上传文件的路径信息,服务器保存的名字,以及上传到服务器的分类信息,支持进度汇报功能。
To upload a file to the server, you need to specify the path information of the uploaded file, the name saved by the server, and the classification information uploaded to the server to support the progress report function.
公共方法UploadFileAsync(String, String, String, ActionInt64, Int64)
上传文件给服务器,需要指定上传文件的路径信息(服务器保存的名称就是文件名),以及上传到服务器的分类信息,支持进度汇报功能。
To upload a file to the server, you need to specify the path information of the uploaded file (the name saved by the server is the file name), as well as the classification information uploaded to the server, to support the progress report function.
公共方法UploadFileAsync(Bitmap, String, String, String, ActionInt64, Int64)
上传一个Bitmap图片对象到服务器指定的分类下面,需要指定分类信息,服务器保存的文件名,描述信息,支持进度报告
Upload a Bitmap image object to the category specified by the server, you need to specify the category information, the file name saved by the server, description information, and support for progress reports
公共方法UploadFileAsync(String, String, String, String, ActionInt64, Int64)
上传文件给服务器,需要指定上传文件的路径信息,服务器保存的名字,以及上传到服务器的分类信息,支持进度汇报功能。
To upload a file to the server, you need to specify the path information of the uploaded file, the name saved by the server, and the classification information uploaded to the server to support the progress report function.
受保护的方法WriteStream
将缓冲区的数据写入到流里面去
Write the buffer data to the stream
(继承自 NetworkBase。)
受保护的方法WriteStreamAsync
将缓冲区的数据写入到流里面去
Write the buffer data to the stream
(继承自 NetworkBase。)
受保护的方法WriteStreamFromSocket
从套接字中接收所有的数据然后写入到指定的流当中去,需要指定数据的长度,支持按照百分比进行进度报告
Receives all data from the socket and writes it to the specified stream. The length of the data needs to be specified, and progress reporting is supported in percentage.
(继承自 NetworkBase。)
受保护的方法WriteStreamFromSocketAsync
从套接字中接收所有的数据然后写入到指定的流当中去,需要指定数据的长度,支持按照百分比进行进度报告
Receives all data from the socket and writes it to the specified stream. The length of the data needs to be specified, and progress reporting is supported in percentage.
(继承自 NetworkBase。)
Top
字段
  名称说明
受保护的字段fileCacheSize
文件传输的时候的缓存大小,直接影响传输的速度,值越大,传输速度越快,越占内存,默认为100K大小
The size of the cache during file transfer directly affects the speed of the transfer. The larger the value, the faster the transfer speed and the more memory it takes. The default size is 100K.
(继承自 NetworkBase。)
受保护的字段isPersistentConn
是否是长连接的状态
Whether it is a long connection state
(继承自 NetworkDoubleBase。)
受保护的字段isUseAccountCertificate
是否使用账号登录,这个账户登录的功能是HSL组件创建的服务器特有的功能。
Whether to log in using an account. The function of this account login is a server-specific function created by the HSL component.
(继承自 NetworkDoubleBase。)
受保护的字段LogMsgFormatBinary
设置日志记录报文是否二进制,如果为False,那就使用ASCII码
Set whether the log message is binary, if it is False, then use ASCII code
(继承自 NetworkDoubleBase。)
受保护的字段pipeSocket
当前的网络的管道信息
(继承自 NetworkDoubleBase。)
Top
扩展方法
  名称说明
公共扩展器方法ToJsonString
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
(由 HslExtension 定义。)
Top
备注
在最新的V10.2.0及以上版本中,本客户端支持加密模式,启用加密模式后,就无法通过抓包的报文来分析出用户名密码,以及通信的数据细节,详细可以参考API文档。
示例
简单的实例化
// 简单的实例化例子
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );
带用户名密码的实例化
// 如果有密码的情况
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                                            // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",                                     // 服务器的地址
    Credentials = new MqttCredential( "admin", "123456" )        // 设置了用户名和密码
} );
连接示例
// 连接服务器
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );
HslCommunication.OperateResult connect = mqttSyncClient.ConnectServer( );
if (connect.IsSuccess)
{
    // 连接成功
}
else
{
    // 连接失败,过会就需要重新连接了
}

// 关闭的话
mqttSyncClient.ConnectClose( );
读取数据示例
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 设置长连接
mqttSyncClient.SetPersistentConnection( );

// 读取服务器的数据示例
HslCommunication.OperateResult<string, byte[]> read = mqttSyncClient.Read( topic: "A", payload: Encoding.UTF8.GetBytes( "测试数据" ) );
if (read.IsSuccess)
{
    // 读取成功
    string topic = read.Content1;
    byte[] payload = read.Content2;
}
else
{
    // 读取失败
}

// 你只需要负责不停的读取就好了,单次读取数据限制为200多M,如果网络异常,会自动重新连接的。
// 如果你的服务器都是按照字符串来处理的话,那么客户端可以简便代码,客户端默认采用UTF8编码,当然也可以自己指定
HslCommunication.OperateResult<string, string> read2 = mqttSyncClient.ReadString( "A", "测试数据" );
if (read2.IsSuccess)
{
    // 读取成功
    string topic = read2.Content1;
    string payload = read2.Content2;
}
else
{
    // 读取失败
}
带进度报告示例
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 设置长连接
mqttSyncClient.SetPersistentConnection( );

// 读取服务器的时候进行进度报告,主要分为上传进度和下载进度,此处就简单的显示下而已
Action<long, long> uploadProgress = new Action<long, long>( ( already, total ) =>
 {
     Console.WriteLine( $"已发送:{(already * 100 / total)}%    已发送/总字节:{already}/{total}" );
 } );
Action<long, long> downloadProgress = new Action<long, long>( ( already, total ) =>
{
    Console.WriteLine( $"已下载:{(already * 100 / total)}%    已下载/总字节:{already}/{total}" );
} );
HslCommunication.OperateResult<string, byte[]> read = mqttSyncClient.Read( topic: "A", payload: Encoding.UTF8.GetBytes( "测试数据" ), uploadProgress, null, downloadProgress );
if (read.IsSuccess)
{
    // 读取成功
    string topic = read.Content1;
    byte[] payload = read.Content2;
}
else
{
    // 读取失败
}

// 你只需要负责不停的读取就好了,单次读取数据限制为200多M,如果网络异常,会自动重新连接的。

// 还有一种更复杂的情况,需要配合服务器侧来完成,现在假设一种情况,客户端向服务器发送一个命令,
// 然后服务器执行相关的操作,这个操作分为5个小操作,时间1-5秒不等,然后处理好后将结果发送给客户端
Action<string, string> handleProgress = new Action<string, string>( ( topic, msg ) =>
{
    // topic服务器可以存放处理进度
    Console.WriteLine( $"已完成:{topic}%    当前正在执行:{msg}" );
} );
HslCommunication.OperateResult<string, byte[]> read2 = mqttSyncClient.Read( topic: "B", payload: Encoding.UTF8.GetBytes( "测试数据" ), null, handleProgress, null );
if (read2.IsSuccess)
{
    // 读取成功
    string topic = read.Content1;
    byte[] payload = read.Content2;
}
else
{
    // 读取失败
}
当MqttServer注册了远程RPC接口的时候,例如将一个plc对象注册是接口对象,或是自定义的接口内容
RPC接口读取
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 设置长连接
mqttSyncClient.SetPersistentConnection( );

// 最原始的读取,假设服务器注册了一个PLC的读写接口
OperateResult<string, string> read1 = mqttSyncClient.ReadString( "MainPLC/ReadBool", "{ \"address\": \"M300.1\" }" );
if (read1.IsSuccess)
{
    // read1.Content2 就是内容,bool值的json格式,true/false
}

// 下面是精简的读法
OperateResult<bool> read2 = mqttSyncClient.ReadRpc<bool>( "MainPLC/ReadBool", new { address = "M300.1" } );
if (read2.IsSuccess)
{
    // read2.Content 就是值,自动转换好bool值
}

// 读取的类型和服务器注册RPC接口的返回类型需要一致
服务器都有什么RPC接口呢?可以通过下面的方式知道
RPC接口列表
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 设置长连接
mqttSyncClient.SetPersistentConnection( );

// 读取服务器的已经注册的API信息列表,将返回API的主题路径,注释信息,示例的传入的数据信息。
OperateResult<MqttRpcApiInfo[]> read1 = mqttSyncClient.ReadRpcApis( );
if (read1.IsSuccess)
{
    foreach (MqttRpcApiInfo rpcInfo in read1.Content)
    {
        Console.WriteLine( "Api: " + rpcInfo.ApiTopic );
        Console.WriteLine( "Description: " + rpcInfo.Description );
        Console.WriteLine( "" );
    }
}

// 使用完之后
mqttSyncClient.ConnectClose( );
关于加密模式,在不加密的情况下,用户名及密码,还有请求的数据信息会被第三方软件窃取,从而泄露一些关键的数据信息,如果使用了HslCommunicationV10.2.0版本以上创建的MQTTServer, 那么可以在客户端使用加密模式,加密使用RSA+AES混合加密,密钥动态生成,在保证效率的同时,具有很高的安全性。客户端使用加密如下:
加密举例
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
    UseRSAProvider = true,                // 使用加密访问,上下传文件时也通用适用加密
} );

// 设置长连接
mqttSyncClient.SetPersistentConnection( );

OperateResult<bool> read2 = mqttSyncClient.ReadRpc<bool>( "MainPLC/ReadBool", new { address = "M300.1" } );
if (read2.IsSuccess)
{
    // read2.Content 就是值,自动转换好bool值
}

// 使用完之后
mqttSyncClient.ConnectClose( );
下面演示文件部分的功能的接口方法,主要包含,上传,下载,删除,遍历操作
下载文件功能
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 下载文件的进度报告,此处就简单的打印出来而已
Action<long, long> downloadProgress = new Action<long, long>( ( already, total ) =>
{
    Console.WriteLine( $"已下载:{already * 100 / total}%    已下载/总字节:{already}/{total}" );
} );

// 此处演示下载服务器的一个文件,需要这个文件在服务器存在,并且,账户密码,文件操作在服务器验证通过,最终才会下载成功
// groups 参数是文件的分类目录信息,同一目录不允许存在同名文件
HslCommunication.OperateResult download = mqttSyncClient.DownloadFile( "Files/Group/Admin", "123.txt", downloadProgress, "D:\\123.txt" );
if (download.IsSuccess)
{
    // 下载成功,在D盘目录查看
}
else
{
    // 下载失败
    Console.WriteLine( "Download failed, reason:" + download.Message );
}
上传文件功能
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 下载文件的进度报告,此处就简单的打印出来而已
Action<long, long> uploadProgress = new Action<long, long>( ( already, total ) =>
{
    Console.WriteLine( $"已上传:{already * 100 / total}%    已下载/总字节:{already}/{total}" );
} );

// 此处演示上传服务器的一个文件,需要这个文件在本地存在,并且,账户密码,文件操作在服务器验证通过,最终才会上传成功
// groups 参数是文件的分类目录信息,同一目录不允许存在同名文件
HslCommunication.OperateResult upload = mqttSyncClient.UploadFile( "D:\\123.txt", "Files/Group/Admin", "这是一个文件的注释,可由可无", uploadProgress );
if (upload.IsSuccess)
{
    // 上传成功,就可以下载了
}
else
{
    // 下载失败
    Console.WriteLine( "Upload failed, reason:" + upload.Message );
}
删除文件功能
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 此处演示删除服务器的一个文件,需要这个文件在服务器存在,并且,账户密码,文件操作在服务器验证通过,最终才会删除成功
HslCommunication.OperateResult delete = mqttSyncClient.DeleteFile( "Files/Group/Admin", "D:\\123.txt" );
if (delete.IsSuccess)
{
    // 删除成功
}
else
{
    // 删除失败
    Console.WriteLine( "delete failed, reason:" + delete.Message );
}
遍历指定目录的文件名功能
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 此处演示遍历目录文件集合
HslCommunication.OperateResult<HslCommunication.Core.GroupFileItem[]> files = mqttSyncClient.DownloadPathFileNames( "Files/Group/Admin" );
if (files.IsSuccess)
{
    foreach (var item in files.Content)
    {
        Console.WriteLine( "文件名:" + item.FileName );
        Console.WriteLine( "下载次数:" + item.DownloadTimes );
        Console.WriteLine( "文件大小:" + item.FileSize );
        Console.WriteLine( "上传人:" + item.Owner );
        Console.WriteLine( "上传时间:" + item.UploadTime );
        Console.WriteLine( "文件描述:" + item.Description );
        Console.WriteLine( );
    }
}
else
{
    // 遍历失败
    Console.WriteLine( "read failed, reason:" + files.Message );
}
遍历指定目录的所有子目录
MqttSyncClient mqttSyncClient = new MqttSyncClient( new MqttConnectionOptions( )
{
    ClientId = "ABC",                     // 客户端的唯一的ID信息
    IpAddress = "127.0.0.1",              // 服务器的地址
} );

// 此处演示遍历目录的子目录
HslCommunication.OperateResult<string[]> files = mqttSyncClient.DownloadPathFolders( "Files" );
if (files.IsSuccess)
{
    foreach (var item in files.Content)
    {
        Console.WriteLine( "目录:" + item );
    }
}
else
{
    // 遍历失败
    Console.WriteLine( "read failed, reason:" + files.Message );
}
上述的两个遍历的方法,就可以遍历出服务器的所有目录和文件了,具体可以参考 Demo 的MQTT文件客户端的演示界面。
参见