Files
2025-08-19 12:45:50 +02:00

58 lines
1.6 KiB
C#

using System;
using System.Net;
using System.Net.Sockets;
using Inspectron.HawkEye.Protocol;
using Inspectron.HawkEye.Protocol.Interfaces;
using UdtSharp;
namespace Inspectron.HawkEye
{
public class UDTServer
{
private readonly IImageSource _imageSource;
UdtSharp.UdtSocket _server;
public UDTServer(IImageSource imageSource)
{
_imageSource = imageSource;
_server = new UdtSharp.UdtSocket(AddressFamily.InterNetwork, SocketType.Stream);
_server.Bind(new IPEndPoint(IPAddress.Any, 27001));
_server.Listen(1);
}
public void Receive()
{
while (true)
{
var socket=_server.Accept();
byte[] buffer = new byte[10];
while (socket.IsConnected())
{
socket.Receive(buffer, 0, 10);
switch ((ERequestType) buffer[0])
{
case ERequestType.Trigger:
{
var image = _imageSource.GetImage();
int sent = 0;
while (sent < image.Length)
{
sent += socket.Send(image, sent, image.Length - sent);
}
}
break;
default:
throw new ArgumentOutOfRangeException();
}
}
}
}
}
}