Files
Pilz/Pilz.Networking/TCPManager.vb
2024-06-05 19:15:32 +02:00

78 lines
2.0 KiB
VB.net

Imports System.Net
' Nicht gemergte Änderung aus Projekt "Pilz.Networking (net8.0-windows)"
' Vor:
' Imports System.Net.Sockets
' Imports Newtonsoft.Json.Linq
' Nach:
' Imports System.Net.Sockets
'
' Imports Newtonsoft.Json.Linq
Imports System.Net.Sockets
Public Class TCPManager
Inherits ConnectionManagerBase
Private ReadOnly listener As TcpListener
Public Property BufferSize As Integer = 10240
Public Sub New(port As Integer)
MyBase.New(port)
listener = New TcpListener(IPAddress.Any, port)
End Sub
Public Overrides Sub Start()
If Not IsListening Then
listener.Start()
IsListening = True
Task.Run(AddressOf CheckRetriveData)
End If
End Sub
Public Overrides Sub [Stop]()
If IsListening Then
IsListening = False
listener.Stop()
End If
End Sub
Protected Overrides Function GetBufferSize() As Integer
Return BufferSize
End Function
Private Sub CheckRetriveData()
Do While IsListening
If listener.Pending Then
Dim tcp As TcpClient = listener.AcceptTcpClient()
Dim ip As String = CType(tcp.Client.RemoteEndPoint, IPEndPoint).Address.ToString
Dim Stream As NetworkStream = tcp.GetStream
Dim buf As Byte() = New Byte(BufferSize - 1) {}
tcp.ReceiveBufferSize = BufferSize
Stream.Read(buf, 0, buf.Length)
tcp.Close()
ProcessRetrivedData(ip, buf)
End If
Loop
End Sub
Protected Overrides Sub SendData(ep As IPEndPoint, buf As Byte())
Dim tcp As New TcpClient
tcp.SendBufferSize = BufferSize
tcp.Connect(ep)
Dim stream As NetworkStream = tcp.GetStream()
'Send Data
stream.Write(buf, 0, buf.Length)
stream.Flush()
tcp.Client.Shutdown(SocketShutdown.Both)
tcp.Close()
End Sub
End Class