我正在使用struct sockaddr_in来接收从另一台机器发出的多播数据。当我使用inet_ntop打印出源地址时,它会给我发送数据的PC的源地址。
我想知道是否有办法获取数据被'发送'的多播地址?
答案 0 :(得分:1)
使用setsockopt(2)
在接收套接字上设置IP_PKTINFO
选项(请参阅ip(7)
)。然后使用recvmsg(2)
收集传入的数据报,其msg_control
参数的msg_controllen
和msg
字段指向可以捕获数据报的目标地址的缓冲区。
Linux以外的系统可能会通过BSD IP_RECVDSTADDR
选项提供此功能。