Клиент + Сервер, асинхронные сокеты - C#

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

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

Привет! Пишу клиент серверное приложение на основе асинхронных сокетов. Цель передача картинки. Основа сокета была взята из примера на msdn. Но я столкнулся с проблемой, которую так и не смог пока решить. Собственно сначала код: -Клиент
Bitmap picture = new Bitmap(msg);
            TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
            byte [] buffer = (byte[])tc.ConvertTo(picture, typeof(byte[]));
this.client_socket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(SendCallBack), this.client_socket);
-Сервер
class StateObject
    {
        public Socket workSocket = null;               //сокет клиента
        public int bufferSize = 999999;            //максимальные размер буфера
        public byte[] buffer;// = new byte[999999];   //буфер 
        public StringBuilder sb = new StringBuilder(); //полученные данные в виде строки
    }
 StateObject state = new StateObject();
            //state.buffer = new byte[];
            state.workSocket = this.client_socket;
 
            state.workSocket.BeginReceive(state.buffer, 0, state.bufferSize, SocketFlags.None, new AsyncCallback(ReceiveCallBack), state);
Вопрос следующий: Мне на стороне сервера надо заранее(до вызова метода BeginReceive) знать размерность буфера, что бы потом успешно декодировать массив байт в bitmap. Но как именно узнать эту размерность ни как не могу понять. И ещё как происходит присвоение значений буфера клиента буферу сервера. Т.е в дебаге сразу после выполнения метода BeginReceive значения всех байт буфера клиента присваиваются полю state.buffer сервера. Но для меня это происходит на столько не явно, что совсем не понятно)

Решение задачи: «Клиент + Сервер, асинхронные сокеты»

textual
Листинг программы
bytesRead = connection.Socket.EndReceive(result);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

8   голосов , оценка 4.125 из 5
Похожие ответы