【发布时间】:2011-04-17 00:16:00
【问题描述】:
我正在尝试从 CentOS 5.5 上的特定网络接口接收多播数据
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 对 5)。 -
我尝试了 setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, "eth0", 4),但是 setsockopt() 失败了。我认为(不确定)5 包括终止零。
标签: linux networking multicast multicastsocket