72 lines
1.8 KiB
VB.net
72 lines
1.8 KiB
VB.net
Imports System.IO
|
|
Imports System.Net
|
|
Imports System.Net.NetworkInformation
|
|
Imports System.Net.Sockets
|
|
Imports Newtonsoft.Json.Linq
|
|
|
|
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
|