Клиент + Сервер, асинхронные сокеты - C#
Формулировка задачи:
Привет!
Пишу клиент серверное приложение на основе асинхронных сокетов. Цель передача картинки. Основа сокета была взята из примера на msdn. Но я столкнулся с проблемой, которую так и не смог пока решить.
Собственно сначала код:
-Клиент
-Сервер
Вопрос следующий:
Мне на стороне сервера надо заранее(до вызова метода BeginReceive) знать размерность буфера, что бы потом успешно декодировать массив байт в bitmap. Но как именно узнать эту размерность ни как не могу понять.
И ещё как происходит присвоение значений буфера клиента буферу сервера. Т.е в дебаге сразу после выполнения метода BeginReceive значения всех байт буфера клиента присваиваются полю state.buffer сервера. Но для меня это происходит на столько не явно, что совсем не понятно)
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);Решение задачи: «Клиент + Сервер, асинхронные сокеты»
textual
Листинг программы
bytesRead = connection.Socket.EndReceive(result);