Полагаю, я знаю, что отправка вызова или WSASend в неблокирующем режиме просто добавляют данные во внутренний буфер, но как узнать, когда данные действительно отправляются? Моя цель - отобразить индикатор выполнения.
Вы можете попробовать Boost.Asio (если вы можете изменить). Может выполнять асинхронную или синхронизированную отправку и получение. При асинхронной отправке вы можете зарегистрировать функцию, которая будет вызываться после завершения отправки.