This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AUTS_OLD/UTS_Core/UTSModule/Service/AutsTcpClient.vb

97 lines
2.7 KiB
VB.net
Raw Normal View History

2024-03-11 16:32:52 +08:00
Imports System.Net.Sockets
Imports System.Text
Namespace UTSModule.Service
Public Class AutsTcpClient
Implements IDisposable
Private _tcpClient As TcpClient
Private _tcpOpen As Boolean
Private ReadOnly _hostName As String
Private ReadOnly _hostPort As Integer
Sub New(hostName As String, port As Integer)
_hostName = hostName
_hostPort = port
_tcpOpen = False
End Sub
Public ReadOnly Property IsOpen() As Boolean
Get
Return _tcpOpen
End Get
End Property
Public Sub Open()
If _tcpOpen = True Then Return
_tcpClient = New TcpClient(_hostName, _hostPort)
_tcpOpen = True
End Sub
Public Sub Close()
If _tcpOpen = False Then Return
_tcpClient.Close()
_tcpClient.Dispose()
_tcpOpen = False
End Sub
''' <summary>
''' 网络发送Json字符串,字符串以回车换行结尾
''' </summary>
''' <param name="jsonString"></param>
Public Sub WriteJsonString(jsonString As String)
Dim buf() As Byte = Encoding.UTF8.GetBytes(jsonString)
_tcpClient.GetStream().Write(buf, 0, buf.Length)
End Sub
''' <summary>
''' 超时接收回复信息,以回车换行结尾
''' </summary>
''' <param name="timeout">超时时间,单位毫秒</param>
''' <returns>接收到的字符串,超时返回空字符串</returns>
Public Function ReadJsonString(Optional timeout As Integer = 1000) As String
Dim replayStr As New StringBuilder
Dim time As Date = Now
While (Now - time).TotalMilliseconds < timeout
If _tcpClient.Available > 0 Then
Dim length As Integer = _tcpClient.Available
Dim buf(length - 1) As Byte
_tcpClient.GetStream().Read(buf, 0, length) '读取数据
replayStr.Append(Encoding.UTF8.GetString(buf))
If replayStr.ToString().EndsWith(vbCrLf) Then '校验,以回车换行结尾
Exit While
End If
End If
End While
Return replayStr.ToString()
End Function
Public Function Connected() As Boolean
If _tcpClient Is Nothing Then Return False
If _tcpClient.Client Is Nothing Then Return False
Return _tcpClient.Connected
End Function
Public Sub Dispose() Implements IDisposable.Dispose
If IsOpen() Then
Close()
End If
End Sub
End Class
End Namespace