use more inherit features

This commit is contained in:
schedpas
2020-06-09 07:49:31 +02:00
parent 49e45e50cd
commit 6e33874df6
4 changed files with 33 additions and 32 deletions

3
.gitignore vendored
View File

@@ -258,4 +258,5 @@ paket-files/
# Python Tools for Visual Studio (PTVS) # Python Tools for Visual Studio (PTVS)
__pycache__/ __pycache__/
*.pyc *.pyc
/*/*.xml

View File

@@ -1,4 +1,5 @@
Imports System.IO Imports System.IO
Imports System.Net
Imports Newtonsoft.Json.Linq Imports Newtonsoft.Json.Linq
Public MustInherit Class ConnectionManagerBase Public MustInherit Class ConnectionManagerBase
@@ -29,7 +30,7 @@ Public MustInherit Class ConnectionManagerBase
Public MustOverride Sub Start() Public MustOverride Sub Start()
Public MustOverride Sub [Stop]() Public MustOverride Sub [Stop]()
Public MustOverride Sub Send(empfängerIP As String, cmd As String, content As Object) Protected MustOverride Sub SendData(endPoint As IPEndPoint, data As Byte())
Public Overridable Sub Send(empfängerIP As String, cmd As String) Public Overridable Sub Send(empfängerIP As String, cmd As String)
Send(empfängerIP, cmd, String.Empty) Send(empfängerIP, cmd, String.Empty)
@@ -39,10 +40,25 @@ Public MustInherit Class ConnectionManagerBase
Send(empfängerIP, cmd, CObj(info)) Send(empfängerIP, cmd, CObj(info))
End Sub End Sub
Protected Sub RaiseRetriveData(senderIP As String, cmd As String, content As Object) Private Sub RaiseRetriveData(senderIP As String, cmd As String, content As Object)
RaiseEvent RetriveData(Me, senderIP, cmd, content) RaiseEvent RetriveData(Me, senderIP, cmd, content)
End Sub End Sub
Protected Sub ProcessRetrivedData(senderIP As String, buf As Byte())
Dim contentstring As String = Text.Encoding.Default.GetString(buf)
Dim content As Object = Nothing
Dim cmd As String = String.Empty
Try
Dim res = DecodeFromBytes(buf)
cmd = res.cmd
content = res.content
Catch ex As Exception
End Try
RaiseRetriveData(senderIP, cmd, content)
End Sub
Protected Shared Function EncodeToBytes(cmd As String, content As Object, useAssemblyQualifiedName As Boolean) As Byte() Protected Shared Function EncodeToBytes(cmd As String, content As Object, useAssemblyQualifiedName As Boolean) As Byte()
Dim ms As New MemoryStream() Dim ms As New MemoryStream()
Dim bw As New BinaryWriter(ms) Dim bw As New BinaryWriter(ms)
@@ -82,4 +98,11 @@ Public MustInherit Class ConnectionManagerBase
Return (cmd, content) Return (cmd, content)
End Function End Function
Public Sub Send(empfängerIP As String, cmd As String, content As Object)
Dim ep As New IPEndPoint(GetIPFromHost(empfängerIP).MapToIPv4, Port)
Dim buf As Byte() = EncodeToBytes(cmd, content, UseAssemblyQualifiedName)
SendData(ep, buf)
End Sub
End Class End Class

View File

@@ -44,33 +44,20 @@ Public Class TCPManager
tcp.ReceiveBufferSize = BufferSize tcp.ReceiveBufferSize = BufferSize
Stream.Read(buf, 0, buf.Length) Stream.Read(buf, 0, buf.Length)
Dim contentstring As String = Text.Encoding.Default.GetString(buf)
Dim content As Object = Nothing
Dim cmd As String = String.Empty
Try
Dim res = DecodeFromBytes(buf)
cmd = res.cmd
content = res.content
Catch ex As Exception
End Try
tcp.Close() tcp.Close()
RaiseRetriveData(ip, cmd, content) ProcessRetrivedData(ip, buf)
End If End If
Loop Loop
End Sub End Sub
Public Overrides Sub Send(empfängerIP As String, cmd As String, content As Object) Protected Overrides Sub SendData(ep As IPEndPoint, buf As Byte())
Dim ep As New IPEndPoint(GetIPFromHost(empfängerIP).MapToIPv4, Port)
Dim tcp As New TcpClient Dim tcp As New TcpClient
tcp.SendBufferSize = BufferSize tcp.SendBufferSize = BufferSize
tcp.Connect(ep) tcp.Connect(ep)
Dim stream As NetworkStream = tcp.GetStream() Dim stream As NetworkStream = tcp.GetStream()
Dim buf As Byte() = EncodeToBytes(cmd, content, UseAssemblyQualifiedName)
'Send Data 'Send Data
stream.Write(buf, 0, buf.Length) stream.Write(buf, 0, buf.Length)

View File

@@ -12,6 +12,7 @@ Public Class UDPManager
Private listenTask As Task = Nothing Private listenTask As Task = Nothing
Private ReadOnly cancelTokenSource As New CancellationTokenSource Private ReadOnly cancelTokenSource As New CancellationTokenSource
Private ReadOnly cancelToken As CancellationToken = cancelTokenSource.Token Private ReadOnly cancelToken As CancellationToken = cancelTokenSource.Token
Public ReadOnly Property MaxBufferSize As Integer = &H10000
Public Sub New(port As Integer) Public Sub New(port As Integer)
MyBase.New(port) MyBase.New(port)
@@ -62,29 +63,18 @@ Public Class UDPManager
Dim buf As Byte() = receiveTask.Result.Buffer Dim buf As Byte() = receiveTask.Result.Buffer
Dim ip As String = receiveTask.Result.RemoteEndPoint.Address.ToString Dim ip As String = receiveTask.Result.RemoteEndPoint.Address.ToString
Dim cmd As String = String.Empty
Dim content As Object = Nothing
doExit() doExit()
Try ProcessRetrivedData(ip, buf)
Dim res = DecodeFromBytes(buf)
cmd = res.cmd
content = res.content
Catch ex As Exception
End Try
RaiseRetriveData(ip, cmd, content)
doExit() doExit()
StartInternal() StartInternal()
End Sub End Sub
Public Overrides Sub Send(empfängerIP As String, cmd As String, content As Object) Protected Overrides Sub SendData(ep As IPEndPoint, buf As Byte())
Dim ep As New IPEndPoint(GetIPFromHost(empfängerIP).MapToIPv4, Port)
Dim udp As New UdpClient Dim udp As New UdpClient
Dim buf As Byte() = EncodeToBytes(cmd, content, UseAssemblyQualifiedName)
udp.Connect(ep) udp.Connect(ep)
udp.Send(buf, buf.Length) udp.Send(buf, buf.Length)
udp.Client.Shutdown(SocketShutdown.Both) udp.Client.Shutdown(SocketShutdown.Both)