2

マルチキャストストリームを受信する必要がありますが、CentOS5.5の送信元MACアドレスで着信パケットをフィルタリングします。libpcap図書館を利用する予定です。を使用してマルチキャストグループに参加/脱退することは可能libpcapですか?はいの場合、それを行う方法は?

ありがとう

4

2 に答える 2

2

もちろん、適切なIGMPパケットを作成して送信するだけです。

于 2010-10-27T11:52:56.207 に答える
2

1.ダミーソケットを作成します。sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

2.バインド:rc = bind(sd, (sockaddr*) &addr, sizeof(sockaddr_in));

3.マルチキャストグループに参加します。

ip_mreq mreq;
mreq.imr_interface.s_addr = htonl(InterfaceIp);
mreq.imr_multiaddr.s_addr = htonl(DestIp);
if (setsockopt(sd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) < 0) {
  close(sd);
  // Error handle...
}

ダミーソケットを使用してパケットを送受信しないでください

4.を使用してpcapを開くpcap_open_live()

一般的な考え方は、カーネルにIGMP参加パケットを送信するように「指示」するために通常のソケットを使用し、パケットをキャプチャするためにpcapを使用した後です。

于 2010-10-27T23:00:42.757 に答える