Чтение данных после получения RST и закрытия сокета

Я столкнулся с проблемой в приложении с открытым исходным кодом (quickfix 1.13.3) при попытке прочитать данные, отправленные в сокет через определенный порт.

Проблема возникает, когда сервер отправляет данные и закрывает сокет сразу после него.
Тогда мой код не может прочитать последние отправленные данные, и выдается ошибка 10054.
Обратите внимание, что я могу нормально получать, если сервер не закрывает сокет.

Это код, который я использую для получения данных с сервера в ожидании вашей помощи;

int size = recv( m_socket, m_buffer, sizeof(m_buffer), 0 );

Обратите внимание, что если я использую TCPClient для получения данных, он работает просто отлично, но это приведет к созданию другого приложения быстрого исправления, что означает потерю месяцев тяжелой работы и больше месяцев для создания приложения, аналогичного быстрому исправлению.

1

Решение

Если сервер вызвал отправку RST, семантическая цель состоит в том, чтобы потерять все данные в полете. Сервер обычно не занимается этим. Проблема в этом. На стороне клиента вы ничего не можете с этим поделать, за исключением возможности использовать больший буфер приема сокета, чтобы изменить управление окнами и быстрее читать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]