2012-04-21 71 views
2

我正在使用struct sockaddr_in接收從另一臺機器發送的多播數據。當我使用inet_ntop打印出源地址時,它給了我發送數據的PC的源地址。在Linux上獲取多播源IP地址

我想知道是否有一種獲取數據「發送給」的多播地址的方法?

+0

看看目標地址字段並使用inet_ntop? – 2012-04-21 23:49:36

+0

是的,我修復了這個問題,謝謝你的更新 – Dima 2012-04-22 14:03:24

回答

1

使用setsockopt(2)在接收套接字上設置IP_PKTINFO選項(請參閱ip(7))。然後使用recvmsg(2)來收集傳入的數據報,其msg_controlmsg_controllen字段的msg參數指向可以捕獲數據報的目標地址的緩衝區。

Linux以外的系統可能會通過BSD IP_RECVDSTADDR選項提供此功能。

+0

http://stackoverflow.com/questions/5281409/get-destination-address-of-a-received-udp-packet – Dima 2012-04-24 23:46:37