MqttServer 类 |
命名空间: HslCommunication.MQTT
MqttServer 类型公开以下成员。
名称 | 说明 | |
---|---|---|
MqttServer |
实例化一个MQTT协议的服务器 Instantiate a MQTT protocol server |
名称 | 说明 | |
---|---|---|
EnableIPv6 |
获取或设置服务器是否支持IPv6的地址协议信息 (继承自 NetworkServerBase。)Get or set whether the server supports IPv6 address protocol information | |
IsStarted |
服务器引擎是否启动 (继承自 NetworkServerBase。)Whether the server engine is started | |
LogNet |
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以DEBUG等级进行输出 (继承自 NetworkBase。)The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at DEBUG | |
LogStatistics |
获取当前的日志统计信息,可以获取到每个API的每天的调度次数信息,缓存60天数据,如果需要存储本地,需要调用SaveToFile(String)方法。 Get the current log statistics, you can get the daily scheduling times information of each API, and cache 60-day data. If you need to store it locally, you need to call the SaveToFile(String) method. | |
MqttOnlineSessions |
获得当前异步客户端在线的MQTT客户端信息。 Get the MQTT client information of the current asynchronous client online. | |
OnlineCount |
获取当前的在线的客户端数量 Gets the number of clients currently online | |
OnlineSessions |
获得当前所有的在线的MQTT客户端信息,包括异步的客户端及同步请求的客户端。 Obtain all current online MQTT client information, including asynchronous client and synchronous request client. | |
Port |
获取或设置服务器的端口号,如果是设置,需要在服务器启动前设置完成,才能生效。 (继承自 NetworkServerBase。)Gets or sets the port number of the server. If it is set, it needs to be set before the server starts to take effect. | |
SocketKeepAliveTime |
获取或设置客户端的Socket的心跳时间信息,这个是Socket底层自动实现的心跳包,不基于协议层实现。默认小于0,不开启心跳检测,如果需要开启,设置 60_000 比较合适,单位毫秒 (继承自 NetworkServerBase。)Get or set the heartbeat time information of the Socket of the client. This is the heartbeat packet automatically implemented by the bottom layer of the Socket, not based on the protocol layer. The default value is less than 0, and heartbeat detection is not enabled. If you need to enable it, it is more appropriate to set 60_000, in milliseconds. | |
SyncOnlineSessions |
获得当前同步客户端在线的MQTT客户端信息,如果客户端是短连接,将难以捕获在在线信息。 Obtain the MQTT client information of the current synchronization client online. If the client is a short connection, it will be difficult to capture the online information. | |
Token |
网络类的身份令牌,在hsl协议的模式下会有效,在和设备进行通信的时候是无效的 (继承自 NetworkBase。)Network-type identity tokens will be valid in the hsl protocol mode and will not be valid when communicating with the device | |
TopicStatistics |
获取或设置当前的主题统计信息,默认按照天进行统计,连续统计30天。 You can obtain or set the statistics of the current topic. By default, the statistics are collected every day for 30 consecutive days. | |
TopicWildcard |
获取或设置是否启用订阅主题通配符的功能,默认为 False Gets or sets whether to enable the function of subscribing to the topic wildcard, the default is False |
名称 | 说明 | |
---|---|---|
AsyncAcceptCallback |
异步传入的连接申请请求 (继承自 NetworkServerBase。)Asynchronous incoming connection request | |
CheckRemoteToken |
检查当前的头子节信息的令牌是否是正确的,仅用于某些特殊的协议实现 (继承自 NetworkBase。)Check whether the token of the current header subsection information is correct, only for some special protocol implementations | |
CloseAction |
服务器关闭的时候需要做的事情 (重写 NetworkServerBaseCloseAction.)Things to do when the server is down | |
CloseFileServer |
关闭文件服务功能
| |
ConnectHslAlientClient |
创建一个指定的异形客户端连接,使用Hsl协议来发送注册包 (继承自 NetworkServerBase。)Create a specified profiled client connection and use the Hsl protocol to send registration packets | |
ConnectHslAlientClientAsync |
创建一个指定的异形客户端连接,使用Hsl协议来发送注册包 (继承自 NetworkServerBase。)Create a specified profiled client connection and use the Hsl protocol to send registration packets | |
CreateSocketAndConnect(String, Int32) |
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟,需要指定ip地址以及端口号信息 (继承自 NetworkBase。)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. | |
CreateSocketAndConnect(IPEndPoint, Int32, IPEndPoint) |
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒),如果需要绑定本地的IP或是端口,传入 local对象 (继承自 NetworkBase。)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 | |
CreateSocketAndConnect(String, Int32, Int32) |
创建一个新的socket对象并连接到远程的地址,需要指定ip地址以及端口号信息,还有超时时间,单位是毫秒 (继承自 NetworkBase。)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 | |
CreateSocketAndConnectAsync(String, Int32) |
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟,需要指定ip地址以及端口号信息 (继承自 NetworkBase。)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. | |
CreateSocketAndConnectAsync(IPEndPoint, Int32, IPEndPoint) |
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒),如果需要绑定本地的IP或是端口,传入 local对象 (继承自 NetworkBase。)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 | |
CreateSocketAndConnectAsync(String, Int32, Int32) |
创建一个新的socket对象并连接到远程的地址,需要指定ip地址以及端口号信息,还有超时时间,单位是毫秒 (继承自 NetworkBase。)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 | |
DeleteFileByName |
删除一个指定的文件,如果文件不存在,直接返回 True,如果文件存在则直接删除,删除成功返回 True,如果发生了异常,返回False (继承自 NetworkBase。)Delete a specified file, if the file does not exist, return True directly, if the file exists, delete it directly, if the deletion is successful, return True, if an exception occurs, return False | |
DeleteRetainTopic |
删除服务器里的指定主题的驻留消息。 Delete the resident message of the specified topic in the server. | |
Dispose | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. | |
Dispose(Boolean) |
释放当前的对象
| |
Equals | Determines whether the specified object is equal to the current object. (继承自 Object。) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (继承自 Object。) | |
GetAllMqttRpcApiInfo |
获取当前所有注册的RPC接口信息,将返回一个数据列表。 Get all currently registered RPC interface information, and a data list will be returned. | |
GetAllRetainTopics |
获取所有的驻留的消息的主题,如果消息发布的时候没有使用Retain属性,就无法通过本方法查到 Get the subject of all resident messages. If the Retain attribute is not used when the message is published, it cannot be found by this method | |
GetGroupFromFilePath |
根据路径信息获取到文件列表管理容器,如果返回空,表示不存在。 The file list management container is obtained according to the path information. If the return is empty, it means that it does not exist. | |
GetHashCode | Serves as the default hash function. (继承自 Object。) | |
GetMonitorItemsSnapShoot |
获取当前实时的文件上传下载的监控信息,操作的客户端信息,文件分类,文件名,上传或下载的速度等 Obtain current real-time file upload and download monitoring information, operating client information, file classification, file name, upload or download speed, etc. | |
GetMqttSessionsByTopic |
获取订阅了某个主题的所有的会话列表信息 Get all the conversation list information subscribed to a topic | |
GetType | Gets the Type of the current instance. (继承自 Object。) | |
GroupFileContainerCount |
获取当前的针对文件夹的文件管理容器的数量 Get the current number of file management containers for the folder | |
MemberwiseClone | Creates a shallow copy of the current Object. (继承自 Object。) | |
PublishAllClientTopicPayload |
向所有的客户端强制发送主题及负载数据,默认消息不驻留 Send subject and payload data to all clients compulsively, and the default message does not retain | |
PublishTopicPayload(String, Byte, Boolean) |
从服务器向订阅了指定的主题的客户端发送消息,默认消息不驻留 Sends a message from the server to a client that subscribes to the specified topic; the default message does not retain | |
PublishTopicPayload(MqttSession, String, Byte) |
向指定的客户端发送主题及负载数据 Sends the topic and payload data to the specified client | |
PublishTopicPayload(String, Byte, Boolean, FuncMqttSession, Boolean) |
使用指定的规则向客户端发布主题及负载数据,可以根据会话的登录用户名,客户端ID信息进行筛选,例如只发布用户名admin的账户:( session ) => session.UserName == "admin" Use the specified rules to publish topic and load data to the client, which can be filtered according to the session login user name and client ID information. For example, only the account with the user name admin is published: ( session ) => session.UserName == "admin" | |
PublishTopicPayload(String, String, Byte, Boolean) |
向指定的客户端ID强制发送消息,默认消息不驻留 Forces a message to the specified client ID, and the default message does not retain | |
Receive(SslStream, Int32, Int32, ActionInt64, Int64) |
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息 (继承自 NetworkBase。)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. | |
Receive(Socket, Int32, Int32, ActionInt64, Int64) |
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息 (继承自 NetworkBase。)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. | |
Receive(SslStream, Byte, Int32, Int32, Int32, ActionInt64, Int64) |
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据 (继承自 NetworkBase。)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. | |
Receive(Socket, Byte, Int32, Int32, Int32, ActionInt64, Int64) |
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据 (继承自 NetworkBase。)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. | |
ReceiveAndCheckBytes |
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[Self-checking] Receive a complete synchronization data, including header subsection and content bytes, basic data, if the result is abnormal, the communication ends | |
ReceiveAndCheckBytesAsync |
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[Self-checking] Receive a complete synchronization data, including header subsection and content bytes, basic data, if the result is abnormal, the communication ends | |
ReceiveAsync(SslStream, Int32, Int32, ActionInt64, Int64) |
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息 (继承自 NetworkBase。)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. | |
ReceiveAsync(Socket, Int32, Int32, ActionInt64, Int64) |
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息 (继承自 NetworkBase。)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. | |
ReceiveAsync(SslStream, Byte, Int32, Int32, Int32, ActionInt64, Int64) |
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据 (继承自 NetworkBase。)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. | |
ReceiveAsync(Socket, Byte, Int32, Int32, Int32, ActionInt64, Int64) |
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据 (继承自 NetworkBase。)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. | |
ReceiveByMessage |
接收一条完整的 数据内容,需要指定超时时间,单位为毫秒。 (继承自 NetworkBase。)Receive a complete data content, Need to specify a timeout period in milliseconds | |
ReceiveByMessageAsync |
接收一条完整的 数据内容,需要指定超时时间,单位为毫秒。 (继承自 NetworkBase。)Receive a complete data content, Need to specify a timeout period in milliseconds | |
ReceiveBytesContentFromSocket |
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[Self-checking] Receive a string of byte data from the network. If the result is abnormal, the communication ends. | |
ReceiveBytesContentFromSocketAsync |
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[Self-checking] Receive a string of byte data from the network. If the result is abnormal, the communication ends. | |
ReceiveCommandLineFromSocket(Socket, Byte, Int32) |
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒 (继承自 NetworkBase。)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. | |
ReceiveCommandLineFromSocket(Socket, Byte, Byte, Int32) |
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒 (继承自 NetworkBase。)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. | |
ReceiveCommandLineFromSocketAsync(Socket, Byte, Int32) |
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒 (继承自 NetworkBase。)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. | |
ReceiveCommandLineFromSocketAsync(Socket, Byte, Byte, Int32) |
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒 (继承自 NetworkBase。)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. | |
ReceiveFileFromSocket(Socket, Stream, ActionInt64, Int64) |
[自校验] 从网络中接收一个文件,写入数据流,如果结果异常,则结束通讯,参数顺序文件名,文件大小,文件标识,上传人 (继承自 NetworkXBase。)[Self-checking] Receive a file from the network. If the result is abnormal, the communication ends. | |
ReceiveFileFromSocket(Socket, String, ActionInt64, Int64) |
[自校验] 从网络中接收一个文件,如果结果异常,则结束通讯 (继承自 NetworkXBase。)[Self-checking] Receive a file from the network. If the result is abnormal, the communication ends. | |
ReceiveFileFromSocketAsync(Socket, Stream, ActionInt64, Int64) |
[自校验] 从网络中接收一个文件,写入数据流,如果结果异常,则结束通讯,参数顺序文件名,文件大小,文件标识,上传人 (继承自 NetworkXBase。)[Self-checking] Receive a file from the network. If the result is abnormal, the communication ends. | |
ReceiveFileFromSocketAsync(Socket, String, ActionInt64, Int64) |
[自校验] 从网络中接收一个文件,如果结果异常,则结束通讯 (继承自 NetworkXBase。)[Self-checking] Receive a file from the network. If the result is abnormal, the communication ends. | |
ReceiveFileHeadFromSocket |
[自校验] 从套接字中接收文件头信息 (继承自 NetworkXBase。)[Self-checking] Receive file header information from socket | |
ReceiveFileHeadFromSocketAsync |
[自校验] 从套接字中接收文件头信息 (继承自 NetworkXBase。)[Self-checking] Receive file header information from socket | |
ReceiveHslMessage |
接收一条hsl协议的数据信息,自动解析,解压,解码操作,获取最后的实际的数据,接收结果依次为暗号,用户码,负载数据 (继承自 NetworkBase。)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. | |
ReceiveHslMessageAsync |
接收一条hsl协议的数据信息,自动解析,解压,解码操作,获取最后的实际的数据,接收结果依次为暗号,用户码,负载数据 (继承自 NetworkBase。)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. | |
ReceiveMqttFile |
使用MQTT协议从网络接收字节数组,然后写入文件或流中,支持进度报告 (继承自 NetworkBase。)Use MQTT protocol to receive byte array from the network, and then write it to file or stream, support progress report | |
ReceiveMqttFileAsync |
使用MQTT协议从网络接收字节数组,然后写入文件或流中,支持进度报告 (继承自 NetworkBase。)Use MQTT protocol to receive byte array from the network, and then write it to file or stream, support progress report | |
ReceiveMqttMessage(SslStream, Int32, ActionInt64, Int64) |
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据 (继承自 NetworkBase。)Receive a message of a completed MQTT protocol, including control code and payload data | |
ReceiveMqttMessage(Socket, Int32, ActionInt64, Int64) |
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据 (继承自 NetworkBase。)Receive a message of a completed MQTT protocol, including control code and payload data | |
ReceiveMqttMessageAsync(SslStream, Int32, ActionInt64, Int64) |
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据 (继承自 NetworkBase。)Receive a message of a completed MQTT protocol, including control code and payload data | |
ReceiveMqttMessageAsync(Socket, Int32, ActionInt64, Int64) |
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据 (继承自 NetworkBase。)Receive a message of a completed MQTT protocol, including control code and payload data | |
ReceiveMqttStream |
使用MQTT协议从socket接收指定长度的字节数组,然后全部写入到流中,可以指定进度报告 (继承自 NetworkBase。)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 | |
ReceiveMqttStreamAsync |
使用MQTT协议从socket接收指定长度的字节数组,然后全部写入到流中,可以指定进度报告 (继承自 NetworkBase。)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 | |
ReceiveRedisCommand |
从网络接收一条完整的redis报文的消息 (继承自 NetworkBase。)Receive a complete redis message from the network | |
ReceiveRedisCommandAsync |
从网络接收一条完整的redis报文的消息 (继承自 NetworkBase。)Receive a complete redis message from the network | |
ReceiveRedisCommandString |
接收一行基于redis协议的字符串的信息,需要指定固定的长度 (继承自 NetworkBase。)Receive a line of information based on the redis protocol string, you need to specify a fixed length | |
ReceiveRedisCommandStringAsync |
接收一行基于redis协议的字符串的信息,需要指定固定的长度 (继承自 NetworkBase。)Receive a line of information based on the redis protocol string, you need to specify a fixed length | |
ReceiveStringArrayContentFromSocket |
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯 (继承自 NetworkBase。)[Self-check] Receive an array of strings from the network. If the result is abnormal, the communication ends. | |
ReceiveStringArrayContentFromSocketAsync |
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯 (继承自 NetworkBase。)[Self-check] Receive an array of strings from the network. If the result is abnormal, the communication ends. | |
ReceiveStringContentFromSocket |
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[Self-checking] Receive a string of data from the network. If the result is abnormal, the communication ends. | |
ReceiveStringContentFromSocketAsync |
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[Self-checking] Receive a string of data from the network. If the result is abnormal, the communication ends. | |
RegisterMqttRpcApi(Object) |
注册一个RPC的服务接口,可以指定当前的控制器名称,以及提供RPC服务的原始对象 Register an RPC service interface, you can specify the current controller name, and the original object that provides the RPC service | |
RegisterMqttRpcApi(String, Object) |
注册一个RPC的服务接口,可以指定当前的控制器名称,以及提供RPC服务的原始对象 Register an RPC service interface, you can specify the current controller name, and the original object that provides the RPC service | |
RegisterMqttRpcApi(String, Object, HslMqttPermissionAttribute) |
注册一个RPC的服务接口,可以指定当前的控制器名称,以及提供RPC服务的原始对象,指定统一的权限控制。 Register an RPC service interface, you can specify the current controller name, and the original object that provides the RPC service, Specify unified access control | |
RemoveAndCloseSession |
让MQTT客户端正常下线,调用本方法即可自由控制会话客户端强制下线操作。
| |
ReportObjectApiMethod |
使用指定的对象来返回网络的API接口,前提是传入的数据为json参数,返回的数据为 OperateResult<string> 数据,详细参照说明 Use the specified object to return the API interface of the network, provided that the incoming data is json parameters and the returned data is OperateResult<string> data, please refer to the description for details | |
ReportOperateResult(MqttSession, OperateResultString) |
向客户端发布一个操作结果的信息,仅用于同步网络的时候反馈操作结果,该操作可能成功,可能失败,客户端就知道服务器发生了什么,以及结果如何。 Publish an operation result information to the client, which is only used to feed back the operation result when synchronizing the network. The operation may succeed or fail, and the client knows what happened to the server and the result. | |
ReportOperateResult(MqttSession, String) |
向客户端发布一个失败的操作信息,仅用于同步网络的时候反馈失败结果,将错误的信息反馈回客户端,客户端就知道服务器发生了什么,为什么反馈失败。 Publish a failed operation information to the client, which is only used to feed back the failure result when synchronizing the network. If the error information is fed back to the client, the client will know what happened to the server and why the feedback failed. | |
ReportProgress |
向客户端发布一个进度报告的信息,仅用于同步网络的时候才支持进度报告,将进度及消息发送给客户端,比如你的服务器需要分成5个部分完成,可以按照百分比提示给客户端当前服务器发生了什么 Publish the information of a progress report to the client. The progress report is only supported when the network is synchronized. The progress and the message are sent to the client. For example, your server needs to be divided into 5 parts to complete. You can prompt the client according to the percentage. What happened to the server | |
ReturnAbsoluteFileName |
返回服务器的绝对路径,包含根目录的信息 [Root Dir][A][B][C]...[FileName] 信息
| |
Send(SslStream, Byte) |
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。 (继承自 NetworkBase。)Send a message to the socket until it returns when completed. After testing, this method is thread-safe. | |
Send(Socket, Byte) |
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。 (继承自 NetworkBase。)Send a message to the socket until it returns when completed. After testing, this method is thread-safe. | |
Send(SslStream, Byte, Int32, Int32) |
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。 (继承自 NetworkBase。)Send a message to the socket until it returns when completed. After testing, this method is thread-safe. | |
Send(Socket, Byte, Int32, Int32) |
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。 (继承自 NetworkBase。)Send a message to the socket until it returns when completed. After testing, this method is thread-safe. | |
SendAccountAndCheckReceive |
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendAccountAndCheckReceiveAsync |
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendAsync(SslStream, Byte) |
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。 (继承自 NetworkBase。)Send a message to the socket until it returns when completed. After testing, this method is thread-safe. | |
SendAsync(Socket, Byte) |
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。 (继承自 NetworkBase。)Send a message to the socket until it returns when completed. After testing, this method is thread-safe. | |
SendAsync(SslStream, Byte, Int32, Int32) |
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。 (继承自 NetworkBase。)Send a message to the socket until it returns when completed. After testing, this method is thread-safe. | |
SendAsync(Socket, Byte, Int32, Int32) |
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。 (继承自 NetworkBase。)Send a message to the socket until it returns when completed. After testing, this method is thread-safe. | |
SendBaseAndCheckReceive |
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendBaseAndCheckReceiveAsync |
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendBytesAndCheckReceive |
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendBytesAndCheckReceiveAsync |
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendFileAndCheckReceive(Socket, Stream, String, String, String, ActionInt64, Int64) |
[自校验] 将流数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯 (继承自 NetworkXBase。)[Self-checking] Send stream data to the socket. The specific sending details will be implemented in the inherited class. If the result is abnormal, the communication will be terminated | |
SendFileAndCheckReceive(Socket, String, String, String, String, ActionInt64, Int64) |
[自校验] 将文件数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯 (继承自 NetworkXBase。)[Self-checking] Send the file data to the socket. The specific sending details will be implemented in the inherited class. If the result is abnormal, the communication will end | |
SendFileAndCheckReceiveAsync(Socket, Stream, String, String, String, ActionInt64, Int64) |
[自校验] 将流数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯 (继承自 NetworkXBase。)[Self-checking] Send stream data to the socket. The specific sending details will be implemented in the inherited class. If the result is abnormal, the communication will be terminated | |
SendFileAndCheckReceiveAsync(Socket, String, String, String, String, ActionInt64, Int64) |
[自校验] 将文件数据发送至套接字,具体发送细节将在继承类中实现,如果结果异常,则结束通讯 (继承自 NetworkXBase。)[Self-checking] Send the file data to the socket. The specific sending details will be implemented in the inherited class. If the result is abnormal, the communication will end | |
SendFileStreamToSocket |
[自校验] 将文件数据发送至套接字,如果结果异常,则结束通讯 (继承自 NetworkXBase。)[Self-check] Send the file data to the socket. If the result is abnormal, the communication is ended. | |
SendFileStreamToSocketAsync |
[自校验] 将文件数据发送至套接字,如果结果异常,则结束通讯 (继承自 NetworkXBase。)[Self-check] Send the file data to the socket. If the result is abnormal, the communication is ended. | |
SendMqttFile(Socket, Stream, String, String, ActionInt64, Int64, AesCryptography, HslCancelToken) |
使用MQTT协议将一个数据流发送到网络上去,需要保存的文件名,可选指定文件描述信息,进度报告 (继承自 NetworkBase。)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 | |
SendMqttFile(Socket, String, String, String, ActionInt64, Int64, AesCryptography, HslCancelToken) |
使用MQTT协议将一个文件发送到网络上去,需要指定文件名,保存的文件名,可选指定文件描述信息,进度报告 (继承自 NetworkBase。)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 | |
SendMqttFileAsync(Socket, Stream, String, String, ActionInt64, Int64, AesCryptography, HslCancelToken) |
使用MQTT协议将一个数据流发送到网络上去,需要保存的文件名,可选指定文件描述信息,进度报告 (继承自 NetworkBase。)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 | |
SendMqttFileAsync(Socket, String, String, String, ActionInt64, Int64, AesCryptography, HslCancelToken) |
使用MQTT协议将一个文件发送到网络上去,需要指定文件名,保存的文件名,可选指定文件描述信息,进度报告 (继承自 NetworkBase。)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 | |
SendMqttStream |
使用MQTT协议将流中的数据读取到字节数组,然后都写入到socket里面,可以指定进度报告,主要用于将文件发送到网络。 (继承自 NetworkBase。)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. | |
SendMqttStreamAsync |
使用MQTT协议将流中的数据读取到字节数组,然后都写入到socket里面,可以指定进度报告,主要用于将文件发送到网络。 (继承自 NetworkBase。)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. | |
SendStreamToSocket |
发送一个流的所有数据到指定的网络套接字,需要指定发送的数据长度,支持按照百分比的进度报告 (继承自 NetworkBase。)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. | |
SendStreamToSocketAsync |
发送一个流的所有数据到指定的网络套接字,需要指定发送的数据长度,支持按照百分比的进度报告 (继承自 NetworkBase。)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. | |
SendStringAndCheckReceive(Socket, Int32, String) |
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendStringAndCheckReceive(Socket, Int32, String) |
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendStringAndCheckReceiveAsync(Socket, Int32, String) |
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
SendStringAndCheckReceiveAsync(Socket, Int32, String) |
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯 (继承自 NetworkBase。)[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. | |
ServerClose |
关闭服务器的引擎 (继承自 NetworkServerBase。)Shut down the server's engine | |
ServerStart |
使用已经配置好的端口启动服务器的引擎 (继承自 NetworkServerBase。)Use the configured port to start the server's engine | |
ServerStart(Int32) |
指定端口号来启动服务器的引擎 (继承自 NetworkServerBase。)Specify the port number to start the server's engine | |
SocketAcceptExtraCheck |
当客户端的socket登录的时候额外检查的操作,并返回操作的结果信息。 (继承自 NetworkServerBase。)The operation is additionally checked when the client's socket logs in, and the result information of the operation is returned. | |
StartInitialization |
服务器启动时额外的初始化信息,可以用于启动一些额外的服务的操作。 (重写 NetworkServerBaseStartInitialization.)The extra initialization information when the server starts can be used to start some additional service operations. | |
ThreadPoolLogin |
当客户端连接到服务器,并听过额外的检查后,进行回调的方法 (重写 NetworkServerBaseThreadPoolLogin(Socket, IPEndPoint).)Callback method when the client connects to the server and has heard additional checks | |
ToString | Returns a string that represents the current object. (重写 NetworkServerBaseToString.) | |
UnRegisterMqttRpcApi(Object) |
卸载一个已经注册的RPC接口,想要卸载指定的接口,此处就需要传入注册时一样的参数 Uninstall a registered RPC interface. If you want to uninstall the specified interface, you need to pass in the same parameters as the registration | |
UnRegisterMqttRpcApi(String, Object) |
卸载一个已经注册的RPC接口,想要卸载指定的接口,此处就需要传入注册时一样的参数 Uninstall a registered RPC interface. If you want to uninstall the specified interface, you need to pass in the same parameters as the registration | |
UseFileServer |
启动文件服务功能,协议头为FILE,需要指定服务器存储的文件路径 Start the file service function, the protocol header is FILE, you need to specify the file path stored by the server | |
WriteStreamFromSocket |
从套接字中接收所有的数据然后写入到指定的流当中去,需要指定数据的长度,支持按照百分比进行进度报告 (继承自 NetworkBase。)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. | |
WriteStreamFromSocketAsync |
从套接字中接收所有的数据然后写入到指定的流当中去,需要指定数据的长度,支持按照百分比进行进度报告 (继承自 NetworkBase。)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. |
名称 | 说明 | |
---|---|---|
ClientVerification |
当客户端连接时,触发的验证事件 Validation event triggered when the client connects | |
FileOperateVerification |
当客户端进行文件操作时,校验客户端合法性的事件,操作码具体查看的常量值 When client performing file operations, it is an event to verify the legitimacy of the client. For the operation code, check the constant value of | |
OnClientApplicationMessageReceive |
当收到客户端发来的MqttClientApplicationMessage消息时触发 Triggered when a MqttClientApplicationMessage message is received from the client | |
OnClientConnected |
Mqtt的客户端连接上来时触发 Triggered when Mqtt client connects | |
OnClientDisConnected |
Mqtt的客户端下线时触发 Triggered when Mqtt client connects | |
OnFileChangedEvent |
文件变化的事件,当文件上传的时候,文件下载的时候,文件被删除的时候触发。 The file change event is triggered when the file is uploaded, when the file is downloaded, or when the file is deleted. |
名称 | 说明 | |
---|---|---|
CoreSocket |
对客户端而言是的通讯用的套接字,对服务器来说是用于侦听的套接字 (继承自 NetworkXBase。)A communication socket for the client, or a listening socket for the server | |
fileCacheSize |
文件传输的时候的缓存大小,直接影响传输的速度,值越大,传输速度越快,越占内存,默认为100K大小 (继承自 NetworkBase。)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. |
名称 | 说明 | |
---|---|---|
ToJsonString |
获取当前对象的JSON格式表示的字符串。 (由 HslExtension 定义。)Gets the string represented by the JSON format of the current object. |
MqttServer server; public void Start( ) { try { server = new MqttServer( ); server.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( "Start Failed: " + ex.Message ); } }
MqttServer server; public void Start( ) { try { server = new MqttServer( ); server.ClientVerification += ( MqttSession session, string clientId, string userName, string passwrod ) => { if (userName == "admin" && passwrod == "123456") return 0; return 4; // 返回错误码说明 Return error code description // 1: unacceptable protocol version // 2: identifier rejected // 3: server unavailable // 4: bad user name or password // 5: not authorized }; server.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( "Start Failed: " + ex.Message ); } }
server.ClientVerification += ( MqttSession session, string clientId, string userName, string passwrod ) => { if (userName == "admin" && passwrod == "123456") { session.ClientId = "admin"; return 0; } if (userName == "hsl" && passwrod == "123456") { session.ClientId = "GM"; return 0; } // 也可以写入中文总经理,方便后续其他接口的权限限制 return 4; // 返回错误码说明 Return error code description // 1: unacceptable protocol version // 2: identifier rejected // 3: server unavailable // 4: bad user name or password // 5: not authorized };
server.ClientVerification += ( MqttSession session, string clientId, string userName, string passwrod ) => { if (userName == "admin" && passwrod == "123456") { return 0; } // admin 账户允许发布 admin Account allows posting if (userName == "hsl" && passwrod == "123456") { session.ForbidPublishTopic = true; return 0; } // 禁止发布 Prohibit posting return 4; // 其他账户不允许登录 Other accounts are not allowed to log in // 返回错误码说明 Return error code description // 1: unacceptable protocol version // 2: identifier rejected // 3: server unavailable // 4: bad user name or password // 5: not authorized };
MqttServer server; public void Start( ) { try { server = new MqttServer( ); server.ClientVerification += ( MqttSession session, string clientId, string userName, string passwrod ) => { if (userName == "admin" && passwrod == "123456") return 0; return 4; }; server.OnClientApplicationMessageReceive += ( MqttSession session, MqttClientApplicationMessage message ) => { // 此处举例是打印,当然了,你也可以做一些其他的处理,当所有的客户端进行发布操作的时候,就会触发当前的方法 // The example here is printing. Of course, you can also do some other processing. When all clients perform publishing operations, the current method will be triggered. Console.WriteLine( $"ClientId:[{message.ClientId}] Topic:[{message.Topic}] Payload: {Encoding.UTF8.GetString( message.Payload )}" ); // 如果你想阻止当前的消息推送给客户端,那么可以按照下面的操作 // If you want to prevent the current message from being pushed to the client, then you can follow message.IsCancelPublish = true; }; server.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( "Start Failed: " + ex.Message ); } }
MqttServer server; public void Start( ) { try { server = new MqttServer( ); server.ClientVerification += ( MqttSession session, string clientId, string userName, string passwrod ) => { if (userName == "admin" && passwrod == "123456") return 0; return 5; }; server.OnClientApplicationMessageReceive += ( MqttSession session, MqttClientApplicationMessage message ) => { // 此处举例是打印,当然了,你也可以做一些其他的处理,当所有的客户端进行发布操作的时候,就会触发当前的方法 // The example here is printing. Of course, you can also do some other processing. When all clients perform publishing operations, the current method will be triggered. Console.WriteLine( $"ClientId:[{message.ClientId}] Topic:[{message.Topic}] Payload: {Encoding.UTF8.GetString( message.Payload )}" ); // 如果你想阻止当前的消息推送给客户端,那么可以按照下面的操作 // If you want to prevent the current message from being pushed to the client, then you can follow message.IsCancelPublish = true; }; server.OnClientConnected += ( MqttSession session ) => { // 当客户端连接上服务器的时候触发,你可以做一些额外的数据处理,或是情况处理。比如发送一条消息出去 // Triggered when the client connects to the server, you can do some additional data processing or situation processing. Such as sending a message out server.PublishTopicPayload( session, "Online", Encoding.UTF8.GetBytes( "Thank you for use hsl" ) ); }; server.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( "Start Failed: " + ex.Message ); } }
public void button1_Click( object sender, EventArgs e ) { // 此处示例是发布给指定的主题 // The example here is posted to the specified topic server.PublishTopicPayload( "Topic", Encoding.UTF8.GetBytes( "Test Data" ) ); // 此处示例是发布给指定的clientId // The example here is posted to the specified clientId server.PublishTopicPayload( "ClientId1", "Topic", Encoding.UTF8.GetBytes( "Test Data" ) ); // 此处的示例是发布给所有的客户端,不管这个客户端有没有订阅相关的主题 // The example here is published to all clients, regardless of whether the client is subscribed to related topics server.PublishAllClientTopicPayload( "Topic", Encoding.UTF8.GetBytes( "Test Data" ) ); // 如果要消息驻留,意思就是当其他的客户端订阅了驻留的主题,会立即收到一条最后更新的数据内容,那么上面的代码可以修改成下面的形式 // If you want the message to reside, it means that when other clients subscribe to the resident topic, they will immediately receive a last updated data content, then the above code can be modified into the following form server.PublishTopicPayload( "Topic", Encoding.UTF8.GetBytes( "Test Data" ), true ); server.PublishTopicPayload( "ClientId1", "Topic", Encoding.UTF8.GetBytes( "Test Data" ), true ); server.PublishAllClientTopicPayload( "Topic", Encoding.UTF8.GetBytes( "Test Data" ), true ); }
MqttServer server; public void Start( ) { try { server = new MqttServer( ); server.ClientVerification += ( MqttSession session, string clientId, string userName, string passwrod ) => { if (userName == "admin" && passwrod == "123456") return 0; return 4; }; server.OnClientApplicationMessageReceive += ( MqttSession session, MqttClientApplicationMessage message ) => { if (session.Protocol == "MQTT") { // 正常的MQTT协议的内容,进行发布订阅操作 // 此处举例是打印,当然了,你也可以做一些其他的处理,当所有的客户端进行发布操作的时候,就会触发当前的方法 // The example here is printing. Of course, you can also do some other processing. When all clients perform publishing operations, the current method will be triggered. Console.WriteLine( $"ClientId:[{message.ClientId}] Topic:[{message.Topic}] Payload: {Encoding.UTF8.GetString( message.Payload )}" ); // 如果你想阻止当前的消息推送给客户端,那么可以按照下面的操作 // If you want to prevent the current message from being pushed to the client, then you can follow message.IsCancelPublish = true; } else { // 同步网络的情况,正常情况都是需要返回信息的,否则客户端就会引发接收超时的异常 // In the case of synchronous network, the normal situation is to return information, otherwise the client will cause an exception of receiving timeout if (message.Topic == "GetA") { server.PublishTopicPayload( session, "Success", Encoding.UTF8.GetBytes( "这是你获取的数据A" ) ); } else if (message.Topic == "GetB") { server.PublishTopicPayload( session, "Success", Encoding.UTF8.GetBytes( "这是你获取的数据B" ) ); } else { // 如果需要返回错误的信息,客户端直接IsSuccess为False,然后这个Message就是下面的字符串 // If you need to return wrong information, the client directly IsSuccess is False, and then this Message is the following string server.ReportOperateResult( session, "当前的操作不支持" ); } } }; server.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( "Start Failed: " + ex.Message ); } }
MqttServer server; SiemensS7Net siemens; public void Start( ) { try { siemens = new SiemensS7Net( SiemensPLCS.S1200, "127.0.0.1" ); server = new MqttServer( ); server.ClientVerification += ( MqttSession session, string clientId, string userName, string passwrod ) => { if (userName == "admin" && passwrod == "123456") return 0; return 4; }; server.OnClientApplicationMessageReceive += ( MqttSession session, MqttClientApplicationMessage message ) => { if (session.Protocol == "MQTT") { // 正常的MQTT协议的内容,进行发布订阅操作 // 此处举例是打印,当然了,你也可以做一些其他的处理,当所有的客户端进行发布操作的时候,就会触发当前的方法 // The example here is printing. Of course, you can also do some other processing. When all clients perform publishing operations, the current method will be triggered. Console.WriteLine( $"ClientId:[{message.ClientId}] Topic:[{message.Topic}] Payload: {Encoding.UTF8.GetString( message.Payload )}" ); // 如果你想阻止当前的消息推送给客户端,那么可以按照下面的操作 // If you want to prevent the current message from being pushed to the client, then you can follow message.IsCancelPublish = true; } else { // 同步网络的情况,正常情况都是需要返回信息的,否则客户端就会引发接收超时的异常 // In the case of synchronous network, the normal situation is to return information, otherwise the client will cause an exception of receiving timeout if (message.Topic == "GetA") { server.PublishTopicPayload( session, "Success", Encoding.UTF8.GetBytes( "这是你获取的数据A" ) ); } else if (message.Topic == "GetB") { server.PublishTopicPayload( session, "Success", Encoding.UTF8.GetBytes( "这是你获取的数据B" ) ); } else { // 如果需要返回错误的信息,客户端直接IsSuccess为False,然后这个Message就是下面的字符串 // If you need to return wrong information, the client directly IsSuccess is False, and then this Message is the following string server.ReportOperateResult( session, "当前的操作不支持" ); } } }; // 注册当前的服务,当下面所有的带特性HslMqttApi的方法都暴露出来,其中,设备温度仅支持admin账户设定 // Register the current service, when all the following methods with characteristic HslMqttApi are exposed, // the device temperature only supports the admin account setting server.RegisterMqttRpcApi( this ); server.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( "Start Failed: " + ex.Message ); } } [HslMqttApi( "启动设备" )] public OperateResult StartDevice( ) => siemens.Write( "M100.0", true ); [HslMqttApi( "停止设备" )] public OperateResult StopDevice( ) => siemens.Write( "M100.0", false ); [HslMqttApi( "设置设备的温度信息,当设备处于非工作状态才有效,仅允许admin账户设置" )] [HslMqttPermission( UserName = "admin" )] public OperateResult SetTemperature( float temp ) { // 此处假设设置PLC的温度,当设备停止的时候才能设备 var check = siemens.ReadBool( "M100.0" ).Check( m => m == false, "当前的设备状态在运行中,无法设置!" ); if (!check.IsSuccess) return OperateResult.CreateFailedResult<string>( check ); return siemens.Write( "M200", temp ); } [HslMqttApi( "读取设备的温度信息" )] public OperateResult<float> ReadTemperature( ) => siemens.ReadFloat( "M200" );
MqttServer server; public void Start( ) { try { server = new MqttServer( ); server.ClientVerification += ( MqttSession session, string clientId, string userName, string passwrod ) => { if (userName == "admin" && passwrod == "123456") return 0; return 4; // 返回错误码说明 Return error code description // 1: unacceptable protocol version // 2: identifier rejected // 3: server unavailable // 4: bad user name or password // 5: not authorized }; // 启用文件管理服务 Enable file management service server.UseFileServer( System.IO.Path.Combine( AppDomain.CurrentDomain.BaseDirectory, "FileServer" ) ); // 如果需要启用文件管理的权限,就编写 FileOperateVerification 事件 server.FileOperateVerification += ( MqttSession session, byte code, string[] groups, string[] fileNames ) => { // 此处举个例子,如果用户名为空,不允许删除操作,当然了,你可以自定义任何的规则 if (string.IsNullOrEmpty( session.UserName )) { if (code == MqttControlMessage.FileDelete) return new OperateResult( "Null name not allowed delete!" ); } return OperateResult.CreateSuccessResult( ); }; server.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( "Start Failed: " + ex.Message ); } }