IPv4 と IPv6 の両方を使用して、デュアル スタック環境で IP アドレスの等価性をテストすることは可能ですか? もしそうなら、どのように?
私のアプリケーションは、Boost ASIO の上でwebsocket++を使用しています。
例として、私の LAN では、あるアプリケーションが でリッスンしている別のアプリケーションに接続します192.168.1.2
が、この回答の IP アドレス ゲッターを使用します。
std::string s = socket.remote_endpoint().address().to_string();
::ffff:192.168.1.3
クライアントのアドレスとして与えます。
問題は.2
、 の元の v4 アドレスを持つ独自のノード リストがあるため.3
、上記のゲッターとディスクに保持されている v4 バージョンの単純な文字列比較によって、.3
既に接続されている場合でも への冗長接続を探すことです。
私はさらに、この点線クワッド表記により ,::ffff:192.0.2.128
も::ffff:c000:0280
.
信頼できないソースからのアドレスを受け入れる p2p アプリケーションを構築しているため、冗長な接続を防ぐために、等価性を完全にテストできる必要があります。
私の意図は実装できますか?もしそうなら、どのように?そうでない場合、v4 のみを使用する必要がありますか? 後で統合について心配するよりも、将来の機能を今すぐ含めたいと思います。