Как передать большой массив байтов используя Socket(UDP)
Я знаю что существует UdpClient но таковы условия, использовать Socket.
У меня 2 приложения, FPW который отправляет на сервер запрос сделать скриншот и показать этот скриншот, и консольное приложение-сервер который получает команду и делает скриншот.
Код WPF (рабочий)
var client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint endPoint = new IPEndPoint(IPAddress.Loopback, 27001);
byte[] img = new byte[ushort.MaxValue];
client.SendTo(Encoding.UTF8.GetBytes("screen"), endPoint);
var imgByte = client.ReceiveFrom(img, ref endPoint);
var recMessage = Encoding.UTF8.GetString(img, 0, imgByte);
Здесь происходит отправка команды screen чтобы сервер сделал скриншот
код консольного приложения
var listener = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
var listenerEP = new IPEndPoint(IPAddress.Loopback, 27001);
EndPoint endPoint = new IPEndPoint(IPAddress.Any, 0);
listener.Bind(listenerEP);
var buffer = new byte[ushort.MaxValue];
Bitmap bit = new Bitmap(1920, 1080);
Size size = new Size(bit.Width, bit.Height);
Graphics graphic = Graphics.FromImage(bit);
ImageConverter converter = new ImageConverter();
while (true)
{
var len = listener.ReceiveFrom(buffer, ref endPoint);
// if получает команду screen и входит в кот для скриншота
if (Encoding.Default.GetString(buffer, 0, len) == "screen")
{
//здесь получается скриншот и переводится в массив байтов для дальнейший отправки в приложение WPF
graphic.CopyFromScreen(0, 0, 0, 0, size);
byte[] imgByte = (byte[])converter.ConvertTo(bit, typeof(byte[]));
// отправка байтов (выдаёт ошибку потому что массив слишком велик
listener.SendTo(imgByte, 0, endPoint);
}
и вот тут на отправке я не могу придумать как правильнее отправить этот массив Перед отправкой массива imgByte я проверял отправку другим более мелким массивом и всё работало, то есть отправка есть но как правильно мне отправить код я не знаю Если есть знающие прошу подскажите, буду благодарен. И повторюсь, условия домашнего задания таковы что надо использовать Socket и отправлять по UDP протоколу.
Мне просто надо узнать как правильно отправить массив а дальше я уже знаю как байты перевести обратно в фотографию и показать в приложении.