首页 > 其他分享 >广播与组播,超时检测

广播与组播,超时检测

时间:2024-09-11 19:51:55浏览次数:12  
标签:组播 接收者 广播 act 接字 超时 sigaction 属性

目录

一.超时检测

必要性

超时检测的设置方法

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  0x10000000
    void     (*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.  关闭套接字

标签:组播,接收者,广播,act,接字,超时,sigaction,属性
From: https://blog.csdn.net/qq_64136247/article/details/142148223

相关文章

  • 网站提示“Timeout:数据库连接超时”错误如何解决
    当您遇到“Timeout:数据库连接超时”的错误时,这意味着应用程序尝试连接数据库的时间超过了设定的超时时间。这种错误通常表明存在网络延迟、服务器负载过高或者其他影响连接速度的问题。以下是解决此类问题的一些步骤:基础排查检查数据库服务状态:确认数据库服务正在运行,并且没......
  • 每天五分钟深度学习:广播机制(以python语言为例)
    本文重点因为向量化的计算方式导致效率的提升,所以现在很多时候,我们都是用向量化的计算,但是向量化计算有一个问题让人头痛就是维度的问题,本节课程我们将讲解python中的广播机制,你会发现这个机制的优秀之处。代码实例importnumpyasnpa=np.random.randn(3,4)b=np.random.r......
  • 【mysql】数据写入超时
    问题描述一周前升级过的平台,突然间无法登录了,初步排查,发现是其中某个服务写数据时,数据库连接超时。既然是连接超时,就尝试一下telnetmysql服务是不是通的,——连接没问题。。。是不是密码错了?——密码没有错重启大法试一下?——能启动,但是一旦接收请求时候,就连接超时。......
  • BroadcastReceiver 广播-Android四大组件 一文精讲
    目录1.广播用途与机制1.1什么时候用broadcast?1.2原理图解2.注册广播2.1静态注册2.2动态注册2.3二者区别与联系同:异:3.接受广播3.1接收系统广播3.2接收自定义附带值广播4.发送自定义广播4.1发送无序广播4.2发送有序广播4.3发送应用程序内部广播1.广播用途与......
  • 对OpenHarmony中LiteOS的内核分析——超时原理和应用
    前言在软件世界里面,超时是一个非常重要的概念。比如●当前线程暂时休眠1秒钟,休眠结束后继续执行●每5秒钟采集一下CPU利用率●数据发送失败,2秒钟以后再试一试●等待某种数据,但最多等待50毫秒应用//将当前任务休眠若干tick数,tick为时间单位,常见值为10毫秒LITE_OS_SEC_TEXTUINT3......
  • "waitForSelector"在元素可见前超时等待,尽管元素在屏幕上
    waitForSelector方法在元素可见前超时等待,尽管元素在屏幕上,可能是由于以下原因:元素被隐藏或覆盖:元素可能被其他元素隐藏或覆盖,导致waitForSelector方法无法正确检测到元素的可见性。元素加载延迟:元素可能需要一定的时间来加载和显示,而waitForSelector方法的超时时间可能设置得......
  • 大请求、请求超时问题
    耗时很长的请求怎么处理?比如数据量大的。业务逻辑处理时间太久,以至于响应超时这里的超时响应指的是ReadTimeOut,即发送请求内容完毕到接收响应数据开始的这段时间。普通HTTP请求可能在这段时间没有响应超时。HTTP分块传输(ChunkedTransferEncoding)中每个数据块的到达都会刷新Rea......
  • 使用广播星历计算卫星坐标(Python)
    前言本代码为GNSS课程设计代码,仅供参考,使用的计算方法与公式均来源于王坚主编的《卫星定位原理与应用(第二版)》。本代码计算结果可以通过下载精密星历进行比照,误差在1-10m左右。实现功能:读取卫星广播星历,并将其计算为WGS-84坐标系下的坐标,每颗卫星,每15分钟输出一次。广播星历......
  • django 内置server 外网不能访问, 报连接超时
    django内置server外网不能访问,报连接超时pythonmanage.pyrunserver不能外网访问 ===============================1确保开启了服务pythonmanage.py runserver0.0.0.0:80 ===============================2 确保开启了防火墙(1)查看防火墙端口#查看开放的......
  • 【Mysql】mysql count主键字段很慢超时 执行计划Select tables optimized away ,最终调
     背景: mysql表 主键字段count,速度很慢,耗时将近30s   从执行计划可以看出:explainSELECTCOUNT(rule_id)ASdataCountFROM`sku_safe_stock_rule`;   原理分析:SelecttablesoptimizedawaySELECT操作已经优化到不能再优化了(MySQL根本没有遍历......