58 lines
1.6 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |