Мне было интересно, когда будет вызван обратный вызов, который предоставляется с вызовом BeginRecieve..NET Socket.BeginReceive: Когда срабатывает обратный вызов
- При получении такого количества данных, сколько может храниться буфер? И если да - что, если данные меньше, чем буфер)
- Это когда он получил один пакет TCP/IP?
- Это что-то еще?
Я нашел similair вопрос, который я буду повторять, как я не могу поставить его гораздо яснее:
Теперь вся документация говорит, что обратный вызов, как указано в BeginReceive, называется, как только «данные получены». Но это довольно расплывчато: когда именно этот момент, если вы не знаете, как именно этот другой процесс предоставляет данные?
Один критерий является то, что BeginReceive() считается завершенной (и, таким образом, callbask называется), когда буфер в состоянии объекта заполняется Шифрование до указанного BufferSize. Но что, если процесс «доставки» подает данные в неизвестных количествах и нерегулярно? Для экземпляра , если он сначала поставляет 100 байт последовательно, а затем - это временной интервал в 1 миллисекунду, а еще 200 байтов: BeginReceive в комплекте с 100 байтами входящих данных? Или 300?
http://www.pcreview.co.uk/forums/exactly-beginreceive-socket-considered-completed-t2899270.html
Я думаю, что это будет зависеть от типа [типа сокета] (http://msdn.microsoft.com/en-us/library/system.net.sockets.sockettype). Сетку датаграммы, скорее всего, вызовет обратный вызов, когда датаграмма будет получена. Сокеты потока могут иметь тайм-ауты, внутренние буферы и т. Д. –
Вы когда-нибудь находили правду об этом. Я нахожусь в поисках ответа, и ответ на этой странице не кажется окончательным. Http: // StackOverflow.com/questions/18418613/socket-buffers-the-data-it-получает –