点击或拖拽改变大小

SAMTcpNet 类

基于SAM协议的Tcp实现的网络类,支持读取身份证的数据信息,通过透传的形式实现,除了初始化和串口类不一致,调用方法是几乎一模一样的,详细参见API文档
The network class implemented by Tcp based on the SAM protocol supports reading ID card data information and is implemented in the form of transparent transmission. Except for the inconsistency between the initialization and the serial port class, the calling method is almost the same. See the API documentation for details
继承层次
SystemObject
  HslCommunication.Core.NetNetworkBase
    HslCommunication.Core.NetNetworkDoubleBase
      HslCommunication.Profinet.IDCardSAMTcpNet

命名空间:  HslCommunication.Profinet.IDCard
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:9.2.3.0 (9.2.3.0)
语法
public class SAMTcpNet : NetworkDoubleBase

SAMTcpNet 类型公开以下成员。

构造函数
  名称说明
公共方法SAMTcpNet
实例化一个默认的对象
Instantiate a default object
公共方法SAMTcpNet(String, Int32)
通过指定的ip地址以及端口来实例化对象
Instantiate the object 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。)
公共属性代码示例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。)
公共属性代码示例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。)
公共属性代码示例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。)
公共方法CheckSafeModuleStatus
检测安全模块状态
Detecting Security Module Status
公共方法CheckSafeModuleStatusAsync
检测安全模块状态
Detecting Security Module Status
公共方法代码示例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(IPEndPoint, Int32)
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒)
To create a new socket object and connect to a remote address, you need to specify the remote endpoint and the timeout period (in milliseconds)
(继承自 NetworkBase。)
受保护的方法代码示例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(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(IPEndPoint, Int32)
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒)
To create a new socket object and connect to a remote address, you need to specify the remote endpoint 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(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。)
公共方法Dispose
释放当前的资源
(继承自 NetworkDoubleBase。)
受保护的方法Dispose(Boolean)
释放当前的资源,并自动关闭长连接,如果设置了的话
(继承自 NetworkDoubleBase。)
公共方法Equals
Determines whether the specified object is equal to the current object.
(继承自 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
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(继承自 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。)
公共方法GetHashCode
Serves as the default hash function.
(继承自 Object。)
受保护的方法GetNewNetMessage
获取一个新的消息对象的方法,需要在继承类里面进行重写
The method to get a new message object needs to be overridden in the inheritance class
(重写 NetworkDoubleBaseGetNewNetMessage.)
公共方法GetType
Gets the Type of the current instance.
(继承自 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.
(继承自 NetworkDoubleBase。)
受保护的方法代码示例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.
(继承自 NetworkDoubleBase。)
受保护的方法MemberwiseClone
Creates a shallow copy of the current Object.
(继承自 Object。)
公共方法ReadCard
读取卡片,如果成功的话,就返回身份证的所有的信息
Read the card, if successful, return all the information of the ID cards
公共方法ReadCardAsync
读取卡片,如果成功的话,就返回身份证的所有的信息
Read the card, if successful, return all the information of the ID cards
公共方法代码示例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(Socket, Byte)
将数据报文发送指定的网络通道上,根据当前指定的INetMessage类型,返回一条完整的数据指令
Sends a data message to the specified network channel, and returns a complete data command according to the currently specified INetMessage type
(继承自 NetworkDoubleBase。)
公共方法代码示例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(Socket, Byte)
将数据报文发送指定的网络通道上,根据当前指定的INetMessage类型,返回一条完整的数据指令
Sends a data message to the specified network channel, and returns a complete data command according to the currently specified INetMessage type
(继承自 NetworkDoubleBase。)
公共方法ReadSafeModuleNumber
读取身份证设备的安全模块号
Read the security module number of the ID device
公共方法ReadSafeModuleNumberAsync
读取身份证设备的安全模块号
Read the security module number of the ID device
受保护的方法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。)
受保护的方法Receive
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于1024长度的随机数据信息
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 1024 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
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于1024长度的随机数据信息
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 1024 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。)
受保护的方法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。)
受保护的方法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。)
受保护的方法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。)
公共方法SearchCard
寻找卡片,并返回是否成功
Find cards and return success
公共方法SearchCardAsync
寻找卡片,并返回是否成功
Find cards and return success
公共方法SelectCard
选择卡片,并返回是否成功
Select card and return success
公共方法SelectCardAsync
选择卡片,并返回是否成功
Select card and return success
受保护的方法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。)
受保护的方法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。)
受保护的方法ThreadPoolSocketCheckTimeOut
检查网络套接字是否操作超时,传入的参数需要是HslTimeOut类型,封装socket操作。
Check if the operation of the network socket has timed out. The parameters passed in need to be of type HslTimeOut to encapsulate the socket operation.
(继承自 NetworkBase。)
公共方法ToString
Returns a string that represents the current object.
(重写 NetworkDoubleBaseToString.)
受保护的方法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
字段
  名称说明
受保护的字段CoreSocket
对客户端而言是的通讯用的套接字,对服务器来说是用于侦听的套接字
A communication socket for the client, or a listening socket for the server
(继承自 NetworkBase。)
受保护的字段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。)
受保护的字段InteractiveLock
交互的混合锁,保证交互操作的安全性
Interactive hybrid locks to ensure the security of interactive operations
(继承自 NetworkDoubleBase。)
受保护的字段isPersistentConn
是否是长连接的状态
Whether it is a long connection state
(继承自 NetworkDoubleBase。)
受保护的字段IsSocketError
指示长连接的套接字是否处于错误的状态
Indicates if the long-connected socket is in the wrong 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。)
受保护的字段receiveTimeOut
接收数据的超时时间,单位:毫秒
Timeout for receiving data, unit: millisecond
(继承自 NetworkDoubleBase。)
Top
扩展方法
  名称说明
公共扩展器方法ToJsonString
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
(由 HslExtension 定义。)
Top
示例
在使用之前需要实例化当前的对象,然后根据实际的情况填写好串口的信息,否则连接不上去。
实例化操作
private SAMTcpNet sAMTcpNet = null;

public void Open( )
{
    // 下面是初始化连接的代码,在读取身份证信息之前需要被调用一次
    // The following is the code to initialize the connection. It needs to be called once before reading the ID information.
    sAMTcpNet = new SAMTcpNet( "192.168.0.100", 1000 );
    OperateResult connect = sAMTcpNet.ConnectServer( );
    if (connect.IsSuccess)
    {
        Console.WriteLine( "success" );
    }
    else
    {
        Console.WriteLine( "failed" );
    }
}
在实际的读取,我们一般放在后台进行循环扫描的操作,参见下面的代码
基本的读取操作
// 通常是放到后台进行循环扫描,此处举例开了一个线程的操作,实际上你在开发的时候需要注意GC回收垃圾的事
// Usually it is placed in the background for circular scanning. Here is an example of a thread operation. In fact, you need to pay attention to GC garbage collection when you develop
public void StartRead( )
{
    new Thread( new ThreadStart( ThreadBackgroundReadCard ) ) { IsBackground = true }.Start( );
}

private void ThreadBackgroundReadCard( )
{
    while (true)
    {
        Thread.Sleep( 100 );
        // 首先进行寻卡,成功才进行下一步
        // Find the card first, then proceed to the next step
        OperateResult search = sAMTcpNet.SearchCard( );
        {
            if (!search.IsSuccess)
            {
                continue;
            }
        }

        Thread.Sleep( 100 );
        // 寻卡成功后开始选卡,选卡成功才进行下一步
        // Select card after successful card search, then proceed to the next step after successful card selection
        if (sAMTcpNet.SelectCard( ).IsSuccess)
        {
            OperateResult<IdentityCard> read = sAMTcpNet.ReadCard( );
            if (read.IsSuccess)
            {
                // read.Content,详细的身份证信息,需要查看 IdentityCard 类型的定义,包含身份的名字,
                Console.WriteLine( read.Content.ToString( ) );
            }
            else
            {
                Console.WriteLine( $"读卡失败:{read.Message}" );
            }
        }
    }
}
当然也支持全异步的操作了,就是方法的名称改改
实例化操作
private SAMTcpNet sAMTcpNet = null;

public async void Open( )
{
    // 下面是初始化连接的代码,在读取身份证信息之前需要被调用一次
    // The following is the code to initialize the connection. It needs to be called once before reading the ID information.
    sAMTcpNet = new SAMTcpNet( "192.168.0.100", 1000 );
    OperateResult connect = await sAMTcpNet.ConnectServerAsync( );
    if (connect.IsSuccess)
    {
        Console.WriteLine( "success" );
    }
    else
    {
        Console.WriteLine( "failed" );
    }
}
基本的读取操作
// 通常是放到后台进行循环扫描,此处举例开了一个线程的操作,实际上你在开发的时候需要注意GC回收垃圾的事
// Usually it is placed in the background for circular scanning. Here is an example of a thread operation. In fact, you need to pay attention to GC garbage collection when you develop
public void StartRead( )
{
    new Thread( new ThreadStart( ThreadBackgroundReadCard ) ) { IsBackground = true }.Start( );
}

private async void ThreadBackgroundReadCard( )
{
    while (true)
    {
        Thread.Sleep( 100 );
        // 首先进行寻卡,成功才进行下一步
        // Find the card first, then proceed to the next step
        OperateResult search = await sAMTcpNet.SearchCardAsync( );
        if (!search.IsSuccess)
        {
            continue;
        }

        Thread.Sleep( 100 );
        // 寻卡成功后开始选卡,选卡成功才进行下一步
        // Select card after successful card search, then proceed to the next step after successful card selection
        if ((await sAMTcpNet.SelectCardAsync( )).IsSuccess)
        {
            OperateResult<IdentityCard> read = await sAMTcpNet.ReadCardAsync( );
            if (read.IsSuccess)
            {
                // read.Content,详细的身份证信息,需要查看 IdentityCard 类型的定义,包含身份的名字,
                Console.WriteLine( read.Content.ToString( ) );
            }
            else
            {
                Console.WriteLine( $"读卡失败:{read.Message}" );
            }
        }
    }
}
参见