当前位置: 技术问答>linux和unix
我的组播还差什么?老是收不到信息.
来源: 互联网 发布时间:2016-06-21
本文导语: memset( &mreq, 0, sizeof(mreq) ); if ( (group = gethostbyname( szAddress )) == NULL ) { perror("gethostbyname"); return; } memcpy( (void *) &ia, (void *) group->h_addr, group->h_length ); /* 设置组地址 */ memcpy( &mreq.imr_multiaddr.s...
memset( &mreq, 0, sizeof(mreq) );
if ( (group = gethostbyname( szAddress )) == NULL )
{
perror("gethostbyname");
return;
}
memcpy( (void *) &ia, (void *) group->h_addr, group->h_length );
/* 设置组地址 */
memcpy( &mreq.imr_multiaddr.s_addr, &ia, sizeof(struct in_addr) );
// /* 设置组地址 */
// mreq.imr_multiaddr.s_addr = inet_addr( szAddress );
/* 设置发送组播消息的源主机的地址信息 */
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
/* 把本机加入组播地址,即本机网卡作为组播成员,只有加入组才能收到组播消息 */
if ( setsockopt( m_nSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(struct ip_mreq))
if ( (group = gethostbyname( szAddress )) == NULL )
{
perror("gethostbyname");
return;
}
memcpy( (void *) &ia, (void *) group->h_addr, group->h_length );
/* 设置组地址 */
memcpy( &mreq.imr_multiaddr.s_addr, &ia, sizeof(struct in_addr) );
// /* 设置组地址 */
// mreq.imr_multiaddr.s_addr = inet_addr( szAddress );
/* 设置发送组播消息的源主机的地址信息 */
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
/* 把本机加入组播地址,即本机网卡作为组播成员,只有加入组才能收到组播消息 */
if ( setsockopt( m_nSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(struct ip_mreq))