Буфер SocketAsyncEventArgs заполнен нулями

Я пишу слой сообщений для своей распределенной системы. Я использую IOCP, т.е. методы Socket.XXXAsync.

Вот что-то очень похожее на то, что я делаю (на самом деле, моя функция приема основана на его): http://vadmyst.blogspot.com/2008/05/sample-code-for-tcp-server-using.html

Теперь я обнаружил, что в начале программы (два тестовых серверы разговаривают друг с другом) Я каждый раз получаю несколько объектов SAEA, где .Buffer полностью заполнен нулями, а .BytesTransferred - это размер буфера (в моем случае 1024).

Что это значит? Есть ли особое условие, которое мне нужно проверить? Моя система интерпретирует это как неполное сообщение и движется дальше, но мне интересно, действительно ли я пропускаю какие-то данные. У меня сложилось впечатление, что если ничего не будет получено, вы не получите обратный вызов. В любом случае, я вижу в WireShark, что нет входящих пакетов нулевой длины.

Я нашел следующее, когда я погуглил, но я не уверен, что моя проблема такая же: http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/40fe397c-b1da-428e-a355-ee5a6b0b4d2c

http://go4answers.webhost4life.com/Example/socketasynceventargs -буфер-не-готов-121918.aspx

6
задан Carlos 31 May 2012 в 15:15
поделиться