INT32 socket_fd;
struct ifreq ifr;
int rc = 1;
struct sockaddr_in mcast_addr;
memset(&ifr, 0x00, sizeof(ifr));
strncpy(ifr.ifr_name, "eth3", 5);
mcast_addr.sin_family = AF_INET;
mcast_addr.sin_addr.s_addr =inet_addr("174.16.81.255");广播
mcast_addr.sin_port = htons(MY_PORT);
socket_fd=(socket(AF_INET,SOCK_DGRAM,0)
setsockopt(socket_fd, SOL_SOCKET, SO_BROADCAST|SO_REUSEADDR, (char *)&rc, sizeof(rc));广播
setsockopt(socket_fd, SOL_SOCKET, SO_BINDTODEVICE, (char *)&ifr, sizeof(ifr));绑定发送网口
sendto(socket_fd,buf,net_send_len,0,(struct sockaddr *)&mcast_addr,sizeof(mcast_addr));
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
INT32 socket_fd;
struct sockaddr_in local_addr; /*本地地址*/
struct ifreq ifstru;
memset(&ifstru, 0x00, sizeof(ifstru));
strncpy(ifstru.ifr_name, "eth4", 5);
memset(&local_addr, 0, sizeof(local_addr));
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = htonl(INADDR_ANY);//inet_addr("174.16.81.138");//htonl(INADDR_ANY);
local_addr.sin_port = htons(MY_PORT);
socket_fd=(socket(AF_INET,SOCK_DGRAM,0)
setsockopt(socket_fd, SOL_SOCKET, SO_BINDTODEVICE, (char *)&ifstru, sizeof(ifstru));
fcntl(socket_fd, F_SETFL, O_NONBLOCK);
bind(socket_fd,(struct sockaddr*)&local_addr, sizeof(local_addr))
recvfrom(socket_fd,buf,net_send_len,0,(struct sockaddr *)&local_addr,&size);
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
组播
struct ip_mreq mreq;
//mreq.imr_multiaddr.s_addr = inet_addr(MCAST_ADDR); /*多播地址*/
//mreq.imr_interface.s_addr = htonl(INADDR_ANY); //网络接口为默认
// mreq.imr_interface.s_addr = inet_addr(MY_ADDR);
//mreq.imr_interface.s_addr = recv_addr;
//printf("\n$$$ 0x%x",recv_addr);
//将本机加入多播组
//ret = setsockopt(socket_fd, IPPROTO_IP, IP_ADD_MEMBERSHIP,&mreq, sizeof(mreq));
//if (ret < 0)
//{
// perror("setsockopt():IP_ADD_MEMBERSHIP");
// return -4;
//}