【发布时间】:2011-03-05 08:06:26
【问题描述】:
我正在尝试弄清楚如何使用 IPV6 进行相当于 IPV4 广播的操作。
我正在创建一个非阻塞的 IPV6 UDP 套接字。
从侧面广播我实际上只是在端口 12346 上发送到“FF02::1”。
在聆听方面,我发现我需要加入小组,所以我做了以下事情:
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”。
【问题讨论】:
-
@bdonlan:干杯。是自己做的,但忘了:)
标签: c++ ipv6 multicast link-local