当前位置:首页 > 公众号精选 > 亚星娱乐登录
[导读]凯斯在线娱乐官网凯斯在线娱乐官网开发中,有时候我们程序需要检测设备的联网状态。这里分享两种方法:方法一:创建一个socket client尝试去链接一个凯斯在线娱乐官网。方法二:通过检测sysfs下的对应文件。

大家好,我是杂烩君。

凯斯在线娱乐官网凯斯在线娱乐官网开发中,有时候我们程序需要检测设备的联网状态。这里分享两种方法:

方法一:创建一个socket client尝试去链接一个凯斯在线娱乐官网。

方法二:通过检测sysfs下的对应文件。

方法一

										
										
											
												static
												int
												check_net_status
												(void)
											{
											int
											sock_cli = socket(AF_INET, SOCK_STREAM,
											0);
											if
											(sock_cli <
											0)     {         perror("socket");
											return
											-1;     }
											
												struct
												sockaddr_in
												servaddr;
											memset(&servaddr,
											0,
											sizeof(servaddr));     servaddr.sin_family = AF_INET;     servaddr.sin_port = htons(80);     servaddr.sin_addr.s_addr = inet_addr("114.114.114.114");
											if
											(connect(sock_cli, (struct sockaddr *)&servaddr,
											sizeof(servaddr)) <
											0)     {         perror("connect");
											return
											-1;     }
											printf("connect ok!\n");
											return
											0; }
									

定时去连接一个凯斯在线娱乐官网,连不上了就表明网络断开了。但是这种方法没那么准确,实际是网络已经断开了大概二十秒之后,才检测得到网络断开。

方法二

/sys/class 是由kernel在运行时导出的,目的是通过文件系统暴露出硬件的层级关系。

我们可以检测相应的文件来实时得得到网络连接的状态。

比如,检测无线网络的连接状态,可检测文件:

												
												/sys/class/net/wlan0/operstate
											

检测有线网络的连接状态,可检测文件:

														
														/sys/class/net/eth0/operstate
													

可以通过命令行读取,返回down则表明设备网络已断开,返回up则表明设备网络已连接:

image-20220918115432404

也可以在C代码中进行检测,测试代码如:

																
																
																	#include
																		
																			
																		
																	
																	#include
																		
																			
																		
																	
																	#include
																		
																			
																		
																	
																	#include
																		
																			
																		
																	
																	#include
																		
																			
																		
																	
																	#include
																		
																			       // bind
																		
																	
																	#include
																		
																			
																		
																	
																	#include
																		
																			
																		
																	
																	#include
																		
																			      // struct sockaddr_in
																		
																	
																	#include
																		
																			      // for function htons
																		
																	
																	typedef
																	enum
																	_net_conn_status {     NET_DISCONNECT =
																	-1,     NET_CONNECT =
																	1
																	}net_conn_status_e;
																	
																		static
																		int
																		check_net_status
																		(void)
																	{
																	int
																	ret =
																	0;
																	static
																	char
																	cmd_out[128] = {0};     FILE *fp = popen("cat /sys/class/net/wlan0/operstate",
																	"r");
																	if(fp ==
																	NULL)     {
																	printf("popen error\n");
																	return
																	-1;     }      bzero(cmd_out,
																	sizeof(cmd_out));
																	fscanf(fp,
																	"%s", cmd_out);     pclose(fp);
																	// printf("cmd_out = %s\n", cmd_out);
																	if
																	(0
																	==
																	strcmp((char*)cmd_out,
																	"down"))     {
																	// printf("net disconnect\n");
																	return
																	-1;     }
																	else
																	if
																	(0
																	==
																	strcmp((char*)cmd_out,
																	"up"))     {
																	// printf("net connect\n");
																	return
																	1;     }else{}
																	return
																	ret; }
																	
																		int
																		main
																		(int
																			argc,
																			char
																			**argv)
																	{
																	while
																	(1)     {
																	if
																	(NET_DISCONNECT == check_net_status())         {
																	printf("net disconnect====================\n");         }
																	else
																	if
																	(NET_CONNECT == check_net_status())         {
																	printf("net connect====================\n");         }         usleep(10
																	*
																	1000);     }
																	return
																	0; }
															

运行:

这种方法可以比较实时地检测到网络状态的变化。

以上本次的分享,期待你的三连支持!

注意

由于微信公众号近期改变了推送规则,为了防止找不到,可以星标置顶,这样每次推送的文章才会出现在您的订阅列表里。

猜你喜欢:

分享一种灵活性很高的协议格式(附代码例子)

亚星娱乐登录周记 | 第 16 期

亚星娱乐登录周记 | 第 15 期

访问非法内存为什么不会出错?

亚星娱乐登录周记 | 第 14 期

分享几个实用的代码片段(第二弹)

分享一种你可能不知道的bug定位方法

分享一种修改配置文件的方法

《亚星娱乐登录周记第 13 期:lz4》

《凯斯在线娱乐官网并行多线程处理器,了解一下!》

《分享一种修改配置文件的方法》

《分享几个实用的代码片段(附代码例子)》

《废旧板子再利用:搭建无线调试环境!》

《凯斯在线娱乐官网段错误的3种调试方法汇总!》

《简说TCP通信非阻塞接收(附代码例子)》

《TCP通信常用接口的使用封装》

《写国际化的凯斯在线娱乐官网代码,时间问题如何处理?》

《凯斯在线娱乐官网命令行万能解压命令》

《凯斯在线娱乐官网软件中,总线错误的坑?替大家先踩一步》

《分享凯斯在线娱乐官网软件调试方法及几个有用的工具!》

《分享两点提高编程能力的建议!》


在公众号聊天界面回复 1024 ,可获取凯斯在线娱乐官网资源;回复 m ,可查看文章汇总

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

ST的许多合作伙伴和客户都希望有更多的产品能够利用STM32Cube开发环境。开发人员很享受开发环境的图形用户界面和工具的易用性,如STM32CubeMX、免费的STM32CubeIDE以及许多软件包、驱动程序和中间件,...

关键字: 工具链 凯斯在线娱乐官网 神经网络模型

瑞典乌普萨拉,2024年2月20日 – 全球领先的凯斯在线娱乐官网系统开发软件解决方案供应商IAR宣布:推出其旗舰产品IAR Embedded Workbench for Arm功能安全版的最新版本9.50.3。此次发布进一步加强...

关键字: 凯斯在线娱乐官网 静态代码 工业自动化

这款较低成本的开发平台可帮助学生、初学者和经验丰富的设计人员采用新兴技术

关键字: RISC-V FPGA 凯斯在线娱乐官网

典型应用包括工业、凯斯在线娱乐官网和电信基础设施电源,以及汽车信号调理和电源转换电路

关键字: 运算放大器 凯斯在线娱乐官网 电源转换电路

Feb. 5 2024 ---- 2024年市场持续聚焦AI议题,供应商也陆续推出AI高端芯片,随着运算速度的提升,TrendForce集邦咨询表示,2024年DRAM及NAND Flash在各类AI延伸应用,如智能手机...

关键字: AI DRAM单机 凯斯在线娱乐官网

在当今的数字世界中,数据为王。通过应用数据分析来为新产品或服务提供信息,组织可以获得显著的竞争优势。此外,在5G和物联网等技术的加持下,设备可以比以往更轻松地连接到互联网来共享数据。这引发了新数据的爆发狂潮;研究分析公司...

关键字: 数据中心 凯斯在线娱乐官网 物联网

雅特力AT32 Workbench凯斯在线娱乐官网开发工具基于GUI图形化配置功能,协助开发人员简单轻松配置MCU引脚和周边,且快速产生初始化代码,满足设计需求和降低整体开发时间,使应用开发流程更为高效、可靠,有效缩短产品上市周期...

关键字: 雅特力 凯斯在线娱乐官网

IAR凯斯在线娱乐官网开发解决方案现已全面支持云途半导体YTM32系列MCU,携手合作伙伴共同助力高端创新应用的开发

关键字: MCU 集成电路 凯斯在线娱乐官网

安装凯斯在线娱乐官网操作系统并不复杂,下面是一个大致的步骤指南,以帮助您完成安装。1. 下载凯斯在线娱乐官网发行版:首先,您需要从凯斯在线娱乐官网发行版官方网站下载最新的ISO镜像文件。

关键字: 凯斯在线娱乐官网 操作系统 ISO镜像

计算机是由一堆硬件组成的,为了有限的控制这些硬件资源,于是就有了操作系统的产生,操作系统是软件子系统的一部分,是硬件基础上的第一层软件。

关键字: 凯斯在线娱乐官网 操作系统 计算机
关闭