IPV6 を使用して IPV4 ブロードキャストに相当する方法を見つけようとしています。
ノンブロッキング IPV6 UDP ソケットを作成しています。
ブロードキャスト側から、私は文字通り、ポート 12346 で "FF02::1" に sendto を実行しています。
リッスン側では、グループに参加する必要があることを発見したので、次のことを行いました。
ipv6_mreq membership;
memset( &membership.ipv6mr_multiaddr, 0, sizeof( in6_addr ) );
membership.ipv6mr_multiaddr.u.Word[0] = htons( 0xff02 );
membership.ipv6mr_multiaddr.u.Word[7] = htons( 0x0001 );
membership.ipv6mr_interface = 0;
if( enable )
{
if ( 0 != setsockopt( m_Socket, SOL_SOCKET, IPV6_JOIN_GROUP, (char*)&membership, sizeof( ipv6_mreq ) ) )
{
DisplayError();
return false;
}
}
ただし、setsockopt は常に「WSAENOPROTOOPT」を返します。なんで?誰でもこれで私を助けることができますか?私は完全に途方に暮れています。
編集: レベルを「IPPROTO_IPV6」に変更しましたが、「WSAEINVAL」が表示されます。