当前位置: 首页 > news >正文

广播与组播,超时检测

目录

一.超时检测

必要性

超时检测的设置方法

1.  通过函数自带的参数设置

     2.  通过设置套接字属性进行设置

3.  alarm函数与sigaction函数结合

二.广播与组播(broadcast & multicast)

1.  广播(udp)

理论:

发送者

接收者

2.  组(多)播(udp)

理论

发送者

接收者

一.超时检测

必要性

1.  避免进程进入无限制的阻塞

2.  在规定的时间内未完成相应的语句可以执行其他的语句

超时检测的设置方法

1.  通过函数自带的参数设置

        select poll

     2.  通过设置套接字属性进行设置

3.  alarm函数sigaction函数结合

int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
功能:对接收到的指定信号处理
参数:signum:要捕获的信号act:接收到信号之后对信号进行处理的结构体oldact:接收到信号之后,保存原来对此信号处理的各种方式与信号(可用来做备份)。如果不需要备份,此处可以填NULL
struct sigaction 
{void     (*sa_handler)(int); //信号处理函数void     (*sa_sigaction)(int, siginfo_t *, void *);  //查看信号的各种详细信息sigset_t   sa_mask;int        sa_flags;      //信号属性; SA_RESTART自重启属性
#define SA_RESTART  0x10000000void     (*sa_restorer)(void);//不再使用};     //设置信号属性struct sigaction act;sigaction(SIGALRM,NULL,&act);//获取原属性act.sa_handler=handler;//修改属性sigaction(SIGALRM,&act,NULL);//将修改的属性设置回去
返回值:成功:0出错:-1,并将errno设置为指示错误

二.广播与组播(broadcast & multicast)

1.  广播udp)

理论:

前面介绍的数据包发送方式只有一个接受方,称为单播

如果同时发给局域网中的所有主机,称为广播

只有用户数据报(使用UDP协议)套接字才能广播

一般被设计成局域网搜索协议

● 广播地址:局域网中主机号最大的一个 192.168.50.255

发送者

1.  创建数据报套接字

2.  由于原本的套接字不允许广播,所以要设置广播属性

3.  指定网络信息(接收者)

4.  发送消息

5.  关闭套接字

接收者

1.  创建数据报套接字

2.  指定网络信息(接收者)

3.  绑定套接字

4.  接收消息

5.  关闭套接字

缺点:

        广播方式发给所有的主机,过多的广播会大量的占用网络带宽,造成广播风暴,影响正常的通信

        广播风暴: 网络长时间被大量的广播数据包所占用,使正常的点对点通信无法正常进行,其外在表现为网络速度奇慢无比,甚至导致网络瘫痪

2.  组(多)播udp)

理论

单播方式只能发给一个接收方。

广播方式发给所有的主机。过多的广播会大量占用网络带宽,造成广播风暴,影响正常的通信。

播是一个人发送,加入到多播组的人接收数据。

多播方式既可以发给多个主机,又能避免像广播那样带来过多的负载(每台主机要到传输层才能判断广播包是否要处理)

● D类:224.0.0.0-239.255.255.255

发送者

1.  创建数据报套接字

2.  指定网络信息(接收者)

3.  发送消息

4.  关闭套接字

接收者

1.  创建数据报套接字

2.  设置多播属性,将自己的IP加入到多播组中

3.  指定网络信息(接收者)

4.  绑定套接字

5.  接收消息

6.  关闭套接字


http://www.mrgr.cn/news/24658.html

相关文章:

  • 82.C语言中的内存布局2
  • 56 - I. 数组中数字出现的次数
  • git命令行基础常用指令
  • 训练 Vision Transformer 模型并运行推理
  • leetcode 994.腐烂的橘子
  • 算法设计(一)
  • Linux 信息安全:构建坚固的防御体系
  • Linux和C语言(Day11)
  • 2018年系统架构师案例分析试题五
  • WEB渗透权限维持篇-映像劫持
  • cat:显示文本内容
  • LINQ 和 LINQ扩展方法 (1)
  • 果蔬识别系统性能优化之路(四)
  • Java面试题精选:分布式(二)
  • 基于Linux文件编程实现处理Excel表格的数据
  • 如何查看macos是x86还是arm
  • 建筑用能该如何统一管理?水电气集抄太麻烦?!看看这个吧!建筑能耗分析管理系统 您的运维“好帮手”
  • 2024/9/10 政治“回头看”之世界的物质性及其发展规律
  • 如何使用AIStarter启动器打包并发布AI应用项目【AI软件】
  • 彻底解决Linux-C++项目编译过程中的-fPIC问题