socket绑定设备

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;
    //}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值