2011-06-21 13 views
1

私のサーバがIPV6ソケットを作成しています。ソケット接続中のエラー

クライアントでは、IPV4ソケットを作成しています。 クライアント側の接続APIで、IPV4とIPV6のアドレス構造体のソケット記述子を渡しています。 INET_connect(sockaddress)in6_addr、(int)sizeof(sockaddr_in6))== 0) struct sockaddr_in6 in6_addr;

接続に間違いがあります。これは何か他の理由によるものなのでしょうか? 私のサーバはIPV6(IPV6アドレス)です

+0

IPv6の使用を実際に理解せずにIPv6を使用することを「決定」しただけで、動作するかどうかは分かりません。 –

+0

ありがとう、ジェレミー。私がIPV4でソケットを作成し、IPV6形式で渡されたアドレスをIPV4形式に変換すると、接続が確立される可能性があります。私が間違っていれば私を修正してください。 –

+0

変換方法のコードが表示されず、使用しているプラ​​ットフォームが記述されていないため、間違っている可能性があります。現代のOSは、あなたのIPv4クライアントがIPv6サーバと話すことを可能にします(サーバはIP4でマップされたIP6アドレスを見るでしょう)。必要な詳細で質問を編集すると、SOが役に立ちます。 – Andrey

答えて

3

IPV6アドレスに接続するにはIPV6ソケットを使用するか、IPV4アドレスとIPV6アドレス間のトラフィックを変換するトンネリングサービスを使用する必要があります。クライアントで

+0

@Edwin ... IPV6アドレスをIPV4アドレスにトンネルする方法を提案できますか?私はこれが私の問題を解決できると思います。ありがとう –

+0

http://www.networkworld.com/news/2010/050610-ipv6-tunnel-basics.htmlは良い入門的なスタートです。あなたの環境に適したものを評価する必要があるようです。 –

2

私はIPv4ソケット

なぜを作成するのですか?それをしないでください。あなたのクライアントプログラムがAF_INETソケットを作成する(またはip4-only OS上で実行している)場合は、クライアント側でを実行することはできませんそのような接続が行われるようにします。

これを行う必要がある場合は、IPv4クライアントを処理するために適合させるべきサーバーです。

サーバはip4クライアントからの接続要求を受け入れることができますが、サーバ側のはIPV6_V6ONLYソケットオプションを無効にし、サーバのOSが許可している場合にのみ発生します。この場合、ip6サーバはipv4でマップされたipv6アドレスを介してip4クライアントを見ます。