convert VB to C#
This commit is contained in:
@@ -1,85 +0,0 @@
|
||||
Imports System.IO
|
||||
Imports System.Net
|
||||
Imports System.Net.NetworkInformation
|
||||
Imports System.Net.Sockets
|
||||
Imports System.Threading
|
||||
Imports Newtonsoft.Json.Linq
|
||||
|
||||
Public Class UDPManager
|
||||
Inherits ConnectionManagerBase
|
||||
|
||||
Private ReadOnly client As UdpClient
|
||||
Private listenTask As Task = Nothing
|
||||
Private ReadOnly cancelTokenSource As New CancellationTokenSource
|
||||
Private ReadOnly cancelToken As CancellationToken = cancelTokenSource.Token
|
||||
Public ReadOnly Property MaxBufferSize As Integer = 8192
|
||||
|
||||
Public Sub New(port As Integer)
|
||||
MyBase.New(port)
|
||||
client = New UdpClient(port)
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub Finalize()
|
||||
MyBase.Finalize()
|
||||
client.Client.Shutdown(SocketShutdown.Both)
|
||||
client.Close()
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub Start()
|
||||
If Not IsListening Then
|
||||
StartInternal()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub StartInternal()
|
||||
IsListening = True
|
||||
listenTask = Task.Run(
|
||||
Sub()
|
||||
Try
|
||||
RetriveAnyData(cancelToken)
|
||||
Catch ex As Exception
|
||||
IsListening = False
|
||||
End Try
|
||||
End Sub)
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub [Stop]()
|
||||
If IsListening Then
|
||||
IsListening = False
|
||||
cancelTokenSource.Cancel()
|
||||
listenTask.Wait()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function GetBufferSize() As Integer
|
||||
Return MaxBufferSize
|
||||
End Function
|
||||
|
||||
Private Sub RetriveAnyData(ct As CancellationToken)
|
||||
Dim doExit = Sub() ct.ThrowIfCancellationRequested()
|
||||
Dim receiveTask As Task(Of UdpReceiveResult) = client.ReceiveAsync()
|
||||
|
||||
'Wait for the data and cancel if requested
|
||||
receiveTask.Wait(ct)
|
||||
|
||||
Dim buf As Byte() = receiveTask.Result.Buffer
|
||||
Dim ip As String = receiveTask.Result.RemoteEndPoint.Address.ToString
|
||||
|
||||
doExit()
|
||||
|
||||
ProcessRetrivedData(ip, buf)
|
||||
|
||||
doExit()
|
||||
|
||||
StartInternal()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SendData(ep As IPEndPoint, buf As Byte())
|
||||
Dim udp As New UdpClient
|
||||
udp.Connect(ep)
|
||||
udp.Send(buf, buf.Length)
|
||||
udp.Client.Shutdown(SocketShutdown.Both)
|
||||
udp.Close()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user