(Linux上で動作する)データベースサーバと非同期通信(ソケットを使用)を使用するクライアントアプリケーション(Windows上で実行中)での問題。WSAECONNRESETエラーが発生したときにサーバーの応答メッセージを読み取ることができません。
クライアントアプリケーションは、サーバーにデータをロードする際にWSAECONNRESETエラーでヒットし、サーバーはソケットを終了します。私はWSAGetLastError関数を使用して、エラーメッセージを抽出しました。 WSAECONNRESETエラーでソケットを終了する前に、サーバーがクライアントにいくつかのメッセージ(アプリケーション固有のエラーメッセージを報告)を送信しました。クライアントがサーバーから送信された最後のメッセージを抽出できません(ソケットが閉じられ、 "recv"関数が失敗したため)。私の質問はです。データベースサーバー(Linux上)からクライアント(Windows上)に送信された最後のメッセージを抽出する方法はありますか?
このケースは、linuxデータベースサーバーとlinuxクライアントで正常に動作しています。つまり、UnixソケットからUnixソケットへ。しかし、問題はLinuxソケットからWindowsソケット通信までしか発生しません。
お願いします。よろしくお願いいたします。
私はTCPタグを追加しました。うまくいけば、専門家の一人がチャイムします。しかし[Wikipediaによる](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_terminationによる)クライアントがエラーメッセージの受信を確認する前に接続を確認してください。 –
@HarryJohnston彼は*接続をリセットすることでルールを破っています。それを正しく閉じることは、未読データがある場合にのみその旨を行うことができます。Wikipediaのステートメントは正しくありません。私はそれを修正しました。 – EJP