IPv4からIPv4、IPv4からIPv6、IPv6からIPv4、およびIPv6からIPv6のアドレス接続を可能にするソケットを作成しようとしています。
1.)プロトコルの組み合わせ(IPv4からIPv6、IPv6からIPv4など)は許可されていますか?
2.)その場合、ソケットの作成に送信元アドレスまたは宛先アドレスのファミリーを使用しますか?
現在、送信元アドレスを使用していますが、IPv6送信元アドレスとIPv4宛先アドレスを使用するとソケットエラー10014WSAEFAULTが発生します。
コードの関連部分:
if ( !strchr( srcAddr, '[' ) )
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
else
sock = socket( AF_INET6, SOCK_STREAM, IPPROTO_TCP );
if ( !strchr( srcAddr, '[' ) )
{
rc = bind( sock, ( struct sockaddr * ) &sAddrSrc,
sizeof( sAddrSrc ) );
}
else
{
rc = bind( sock, ( struct sockaddr * ) &sAddrSrc6,
sizeof( sAddrSrc6 ) );
}
if ( !strchr( destAddr, '[' ) )
{
rc = connect( sock, (struct sockaddr *) &sAddrDest,
sizeof(sAddrDest) );
}
else
{
rc = connect( sock, ( struct sockaddr * ) &sAddrDest6,
sizeof( sAddrDest6 ) );
}