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