Мне нужно знать, когда буфер отправки Windows-сокета пуст, то есть когда он был подключен к сети. SIO_FLUSH, похоже, ничего не делает, кроме как уничтожает содержимое этого буфера, вместо того, чтобы ждать, пока TCP не завершит его отправку.
Причина, по которой мне это нужно, заключается в том, что я не должен начинать отправку данных по отдельному соединению до тех пор, пока все данные по соединению под рукой не будут отправлены (или ближе всего к этому).
Это может показаться очень странным требованием, которое пахнет как плохие протоколы, но протокол HTTP, и он прошел через все это :). Мне требуется передавать большие объемы данных в браузер в режиме реального времени, и время задержки сети не позволяет мне запрашивать больше данных, когда поступают данные, поскольку это замедляет запросы на основе задержки, а не только пропускной способности. Идеальным решением будет бесконечный запрос, который получает 1 поток данных в реальном времени, но, как уже говорилось, я должен использовать HTTP, который не поддерживает это. У меня нет контроля над реализацией HTTP на стороне клиента (строго запрос-ответ).
Итак, чтобы оптимизировать использование полосы пропускания и максимально приблизиться к данным в реальном времени, мне нужно знать, когда отправляется буфер на соединении 1, прежде чем отправлять данные соединения 2 (данные генерируются в реальном времени и не должны быть несвежим).
Если кто-нибудь знает, как этого добиться, пожалуйста, дайте мне знать.