在Linux上获取组播源IP地址

时间:2012-04-21 23:05:29

标签: linux networking network-programming multicast

我正在使用struct sockaddr_in来接收从另一台机器发出的多播数据。当我使用inet_ntop打印出源地址时,它会给我发送数据的PC的源地址。

我想知道是否有办法获取数据被'发送'的多播地址?

1 个答案:

答案 0 :(得分:1)

使用setsockopt(2)在接收套接字上设置IP_PKTINFO选项(请参阅ip(7))。然后使用recvmsg(2)收集传入的数据报,其msg_control参数的msg_controllenmsg字段指向可以捕获数据报的目标地址的缓冲区。

Linux以外的系统可能会通过BSD IP_RECVDSTADDR选项提供此功能。