linux下如何开启multicast

linux下如何开启multicast,第1张

socket创建UDP通信描述符后,setsockopt加入多播组,再bind绑定到该网卡上

//在指定的IP和端口上接收多播组的报文

int  recv_msg(char  *ip   , unsigned  short  port , char  *mult_ip )

{

//建立通讯套接字

int  fd = socket( PF_INET , SOCK_DGRAM , 0 )

if( -1 == fd )

{

perror("socket failed")

return  -1

}

//设置地址重用和接收多播

{

int  reuse = 1 

struct  ip_mreqn  mult_addr = {0}

mult_addr.imr_multiaddr.s_addr = inet_addr( mult_ip )

mult_addr.imr_address.s_addr = inet_addr( ip )

if( -1 == setsockopt( fd , IPPROTO_IP , IP_ADD_MEMBERSHIP ,

&mult_addr , sizeof(mult_addr)))

{

perror("setsockopt add failed")

goto  _out

}

if( -1 == setsockopt( fd , SOL_SOCKET, SO_REUSEADDR,

&reuse , sizeof(reuse) ) )

{

perror("setsockopt reuse failed")

}

}

//绑定地址和端口

{

struct  sockaddr_in  addr = {0}

addr.sin_family = PF_INET

addr.sin_port = htons( port )

addr.sin_addr.s_addr = INADDR_ANY

if( -1 == bind( fd , (struct sockaddr*)&addr ,

sizeof(addr) ) )

{

perror("bind failed")

goto  _out

}

}

//接收信息

while(1)

{

char  buf[128] = {0}

int   ret  = 0 

struct sockaddr_in  client_addr = {0}

int  len = sizeof(client_addr) 

ret = recvfrom( fd , buf , sizeof(buf), 0 , 

(struct sockaddr*)&client_addr ,

&len )

//被信号中断则重启

if( (-1 == ret)&&(EINTR ==errno ))

{

continue

}

else if( -1 ==ret )

{

perror("recvfrom failed")

goto  _out

}

else if( ret >0 )

{

printf("%s\n" , buf )

}

usleep( 100*1000 )

}

_out:

if( fd >= 0)

{

close( fd )

}

return  0

}

在kaliLinux下配置pppoe,一般有以下步骤:1.安装pppoe软件。ape-getinstallpppoe即可。2.设置拨号属性:到了这一步,如果没有问题的话,应该就可以正常连上pppoe服务器了。

最近项目接触到Openwrt的编译和使用,op本身是一个定制的linux系统,兼容的包和语言也有很多,随着物联网的发展,相信在路由器方面的应用会越来越多。

涉及到网关multiwan的多线多播、 负载均衡,所以使用 openwrt的 mwan3 package

openwrt-mwan3官方说明

3.查看status

能看到 双网口的的负载百分比和设置的rule规则

luci也提供了图形界面修改和查看状态的功能

具体步骤 参考

使用MWAN3进行多线叠加详细教程


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7084671.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-01
下一篇2023-04-01

发表评论

登录后才能评论

评论列表(0条)

    保存