Принять массив байтов от клиента - C#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Net.Sockets;
using System.Net;
 
namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
 
            Socket listner = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            listner.Bind(new IPEndPoint(IPAddress.Any, 8080));
            listner.Listen(10);
            Socket client = listner.Accept();
            NetworkStream ns = new NetworkStream(client);

            BinaryReader br = new BinaryReader(ns);
            byte[] b = br.ReadBytes(1024);

        }
    }
Привет всем, у меня такая проблема. Я хочу прочесть байты которые мне отослал клиент, я незнаю сколько он мне их отослал, но я хочу получить эти все байты от него и собрать в одную переменную из масивов байтов. Я пробую это сделать с помощю BinaryReader и его метода ReadBytes. Немогу понять его работы. Я думал если я в его параметр введу большое число то это будет просто количество байтов которых он прочтет за 1 раз и если байтов пришло меньше то он мне передаст массив с меньшим размером. Но в даном случае, метод при маленьком значении параметра, например 10, читает эти 10 байтов нормально, но мне надо целый масив байтов и я не знаю сколько мне их послали. Если я ввожу значения параметра с запасом(клиент пересилает меньше 1024 байта) то поток тупо зависает, догадываюсь что он ждет пока клиент ещё байтов ему отошлет для чтения. Помоготи подобрать другой способ реализации моей задачи, спасбио.

Решение задачи: «Принять массив байтов от клиента»

textual
Листинг программы
if(myNetworkStream.CanRead)

Оцени полезность:

10   голосов , оценка 4.2 из 5