我试图接受在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