Вот есть у меня массив байтов:
const int BUFFER_SIZE = 256;
byte[] buffer = new byte[BUFFER_SIZE];
Допустим, где-нибудь я вызываю метод:
socket.BeginReceive(buffer, 0, BUFFER_SIZE, 0, ReceiveCallback, socket);
Затем на сокет приходит какая-то информация, вызывается метод BeginReceive, в котором я принимаю сообщение, проверяю массив на пустоту и что-нибудь отправляю, если он не пустой:
Socket socket = (Socket)AR.AsyncState;
int bytes = socket.EndReceive(AR);
if (bytes > 0) {
buffer = BitConverter.GetBytes(12345);
socket.Send(buffer);
}
И вот теперь, когда мне снова нужно начать получать данные, в этом же методе я вызываю:
socket.BeginReceive(buffer, 0, ?, 0, ReceiveCallback, socket);
Каким должен быть размер получаемого массива?
Иногда случается так, что приходят старые данные, т.е. buffer не изменяется при получении, или вовсе приходит пустой массив. Почему так происходит? Как это вообще работает?
Прошу ссылки на MSDN или не присылать, или вкратце рассказывать, что там написано. Я не сильно дружен с MSDN.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как получить необходимые значения без миллиона вложенных for (key in data) {}
Моя цель увидеть состояние "parsererror" в функции обратного вызова"parsererror" говорит о том что данные приняты но сформированные с ошибкой
Создайте функцию isEmpty(obj), которая возвращает true, если в объекте нет свойств и false – если хоть одно свойство есть