リクエストが交換されるたびに接続を開いたり閉じたりするTCP/IPクライアント/サーバー接続をセットアップしました。それは完璧に機能します。クライアントアプリは接続を開き、リクエストを送信して待機します。サーバーアプリケーションは、要求を受信して応答を生成し、それを送り返して接続を閉じます。Cientアプリとサーバーアプリはそれを何百回も行います。
今、私は次のステップに行こうとしていました:送信元IPアドレスとポートを設定します。
このコードはLinuxとWindowsの両方で機能するはずだったので、SO_BINDTODEVICEはLinux / Unixでのみサポートされているため、問題ありません。
クライアントソケットで送信元ポートとANYADRRをバインドしようとしました。そしてそれは動作します...しばらくの間。最終的にはエラー10038が発生します。インターネットでいくつかの記事を読みましたが、明確な答えはありません...ソースIPの選択は不明なままです。
同じライブラリにUNICASTモードとMULTICASTモード(コネクションレス型UDP通信モード)、送信者と受信者があり、MULTICASTモードで送信元ポート/IPを設定できたことに注意してください。UNICASTは試していません。まだ。
とにかく、誰かが助けになるかもしれない何かを知っていますか?私はWinSock2.2を使用しており、可能な限りプラットフォームに依存しないようにしています。