tcp: почему только второй вызов Socket.Receive (byte []) возвращает данные?

У меня типичная ситуация. Мне нужно отправить «запрос» на сервер через TCP и получить ответ.

// socket is connected
socket.Send(CreateRequest());
byte[] br = new byte[VERY_BIG_BUFFER];
int count = socket.Receive(br);   // only 4 bytes received: 15 0 0 0
count = socket.Receive(br);       // here I receive data I actually need

Однако по какой-то причине я должен позвонитьsocket.Receive дважды, чтобы все работало. В дополнительном вызове я получаю только четыре байта: 15 0 0 0.

Жесткое программирование одного дополнительного вызова без понимания, зачем мне это нужно, может привести к странным проблемам. Кто-нибудь знает, что происходит и зачем мне нужен дополнительный звонок?

Ответы на вопрос(1)

Ваш ответ на вопрос