我試圖接受在CentOS 5.5接收來自特定的網絡接口的多播在Linux上
sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(1234);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sd, (sockaddr*)&addr, sizeof(sockaddr_in));
setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, "eth0", 5);
從特定的網絡接口的多播數據,但我收到來自所有接口的數據包。
有什麼不對?
不應該是'setsockopt(sd,SOL_SOCKET,SO_BINDTODEVICE,「eth0」,4);'? (注意4 vs 5)。 – 2010-09-24 21:43:17
我試過setsockopt(sd,SOL_SOCKET,SO_BINDTODEVICE,「eth0」,4),但setsockopt()失敗。我認爲(不確定)5是否包括終止零點。 – Dima 2010-09-24 21:45:00