Работа с задачей клиентского приложения (работает в Windows), которая использует асинхронную связь (с сокетами) с сервером базы данных (работает на Linux).Не удается прочитать ответные сообщения сервера при возникновении ошибки WSAECONNRESET?
Клиентское приложение попало с ошибкой WSAECONNRESET при загрузке данных на сервер, и сервер завершает работу сокета. Я использовал функцию WSAGetLastError и извлек сообщение об ошибке. Сервер отправил нескольким сообщениям (сообщение об ошибке конкретного приложения) клиенту перед завершением сокета с ошибкой WSAECONNRESET. Клиент не может извлечь последнее сообщение, которое отправляется сервером (поскольку сокет закрыт и функция «recv» не работает). Мой вопрос: Как извлечь последние сообщения, отправленные сервером базы данных (на linux) клиенту (на окнах)?
Обратите внимание, что этот случай отлично работает с сервером базы данных linux для клиента linux. Я имею в виду, unix-сокет для unix-сокета. Но проблема возникает только при подключении linux к соединению сокетов Windows.
Цените свою помощь Пожалуйста!
Я добавил тэг TCP, надеюсь, один из экспертов зазвонит. Но [согласно Википедии] (https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_termination) вы нарушаете правила, закрывая соединение до того, как клиент подтвердил получение сообщения об ошибке. –
@HarryJohnston Он нарушает правила путем * сброса * соединения. Закрытие его правильно может иметь только такой эффект, если есть непрочитанные данные. Утверждение в Википедии неверно. Было * неверно: я исправил это. – EJP