マルチキャストストリームを受信する必要がありますが、CentOS5.5の送信元MACアドレスで着信パケットをフィルタリングします。libpcap
図書館を利用する予定です。を使用してマルチキャストグループに参加/脱退することは可能libpcap
ですか?はいの場合、それを行う方法は?
ありがとう
マルチキャストストリームを受信する必要がありますが、CentOS5.5の送信元MACアドレスで着信パケットをフィルタリングします。libpcap
図書館を利用する予定です。を使用してマルチキャストグループに参加/脱退することは可能libpcap
ですか?はいの場合、それを行う方法は?
ありがとう
もちろん、適切なIGMPパケットを作成して送信するだけです。
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を使用した後です。