计算机网络学习笔记5-UDP广播

news/2024/5/18 15:14:06 标签: udp, tcp/ip

广播:由一台主机向该主机所在子网内的所有主机发送数据的方式
广播只能用UDP或原始IP实现,不能用TCP

广播的用途—>>>单个服务器与多个客户主机通信时减少分组流通
以下几个协议都用到广播
1、地址解析协议(ARP) 通过IP得到mac地址
2、动态主机配置协议(DHCP) 自动主机IP
3、网络时间协议(NTP)

UDP广播的特点
1、处于同一子网的所有主机都必须处理数据
2、UDP数据包会沿协议栈向上一直到UDP层
3、运行音视频等较高速率工作的应用,会带来大负载,局限于局域网内使用

定向广播地址:主机ID全1
1、例:对于192.168.220.0/24,其定向广播地址为192.168.220.255
2、通常路由器不转发该广播
受限广播地址:255.255.255.255
路由器从不转发该广播
如果你指向在某个局域网内广播 请选择 定向广播地址
如果你想在任何局域网内部广播 只能选择 受限广播地址

广播的mac地址:ff:ff:ff:ff:ff:ff
socket创建的套接字 默认不支持广播
使用setsockopt设置套接字的选项 支持广播

int yes = 1;
setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &yes,sizeof(yes));

在这里插入图片描述
案例:发送广播

#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <arpa/inet.h>
#include <fcntl.h>
int main()
{
	//udp支持广播
	int sockfd = socket(AF_INET, SOCK_DGRAM,0);
	
	//让sockfd支持广播
	int yes = 1;
	setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &yes,sizeof(yes));
	
	//发送广播地址(目的地址 是广播地址)
	struct sockaddr_in dst_addr;
	bzero(&dst_addr,sizeof(dst_addr));
	dst_addr.sin_family = AF_INET;
	dst_addr.sin_port = htons(8000);
	dst_addr.sin_addr.s_addr = inet_addr("255.255.255.255");
	//inet_pton(AF_INET,"255.255.255.255", &dst_addr.sin_addr.s_addr);
	
	char msg[]="i am broadcast";
	sendto(sockfd,msg,strlen(msg),0, \
	(struct sockaddr *)&dst_addr, sizeof(dst_addr));
	
	close(sockfd);
	return 0;
}

在这里插入图片描述


http://www.niftyadmin.cn/n/1626668.html

相关文章

static在c/c++中的使用

staticValueValueValueValueC修饰全局变量&#xff0c;使之只在当前.c有效。在程序运行中一直存在。默认值为0修饰局部变量&#xff1a;在第一次调用局部变量所在的函数时赋值&#xff0c;函数结束不释放&#xff0c;再次调用不开辟空间不赋值static放在函数返回值前&#xff0…

update mysql php_PHP MySQL Update

UPDATE 语句用于中修改数据库表中的数据。更新数据库中的数据UPDATE 语句用于更新数据库表中已存在的记录。语法UPDATE table_nameSET column1value, column2value2,...WHERE some_columnsome_value注释&#xff1a;请注意 UPDATE 语法中的 WHERE 子句。WHERE 子句规定了哪些记…

关于封装的可执行短信发送文件调用完成实现短信触发发送

近期在解决某个问题的过程中&#xff0c;想利用现有的短信接口&#xff0c;但是从早期项目的短信功能层层剥离出来的居然不是自己想象中的端口四要素&#xff08;刚参加工作&#xff0c;见笑了&#xff09;&#xff0c;而是一个基础C语言编写的exe文件&#xff0c;而且还固定的…

计算机网络学习笔记6-多播

多播 数据的收发仅在同一分组中进行 多播的特点&#xff1a; 1、多播地址标示一组接口 2、多播可以用于广域网使用 在IPv4中&#xff0c;多播是可选的 多播地址&#xff1a; IPv4的D类地址是多播地址&#xff0c;前面有提 十进制&#xff1a;224.0.0.1 ~ 239.255.255.254 任意…

mysql having和where区别_mysql having和where的区别

区别唯一区别是为了区别where&#xff1a;其实是where只能跟着from后&#xff0c;having只能跟着group by后。即&#xff1a;having是对一个表的数据进行了分组之后&#xff0c;对“组信息”进行相应 条件筛选&#xff1b;可见&#xff1a;having筛选时&#xff0c;只能根据sel…

简单的Linux ***软件PPTP的安装

安装ppp和iptablesyum install -y ppp iptables安装pptpyum install pptpd -y备份默认配置文件cp /etc/ppp/options.pptp /etc/ppp/options.pptpdbak修改pptp的选项配置文件vi /etc/ppp/options.pptp其中应包括如下信息name pptpd refuse-pap refuse-chap refuse-mschap requir…

计算机网络学习笔记7-TCP编程流程及面试题

做为客户端需要具备的条件 1、知道“服务器”的ip、port 2、Connect主动连接“服务器” 3、需要用到的函数 socket—创建“主动TCP套接字” connect—连接“服务器” send—发送数据到“服务器” recv—接受“服务器”的响应 close—关闭连接 做为TCP服务器需要具备的条件 1、…

CSS3 Flexbox在移动端的应用

FlexBox&#xff08;CSS Flexible Box Layout Module&#xff09;是css3新添加一个用于页面布局的全新CSS3模块功能。它可以把列表放在同一个方向&#xff08;从左到右或从上到下排列&#xff09;&#xff0c;并且让这些列表能延伸到占用可用的空间。较为复杂的布局可以通过嵌套…