Linux下使用libiw进行无线信号扫描的实例

打开电脑连接wifi是一件很平常的事情,但这些事情通常都是操作系统下的wifi管理程序替我们完成的,如何在程序中扫描wifi信号其实资料并不多,前面已经有两篇文章介绍了如何使用ioctl()扫描wifi信号,但其实在Linux下有一个简单的库对这些ioctl()的操作进行了封装,这个库就是libiw,使用libiw可以简化编程,本文介绍了如果使用libiw对wifi信号进行扫描的基本方法,本文将给出完整的源代码,本文程序在 ubuntu 20.04 下编译测试完成,gcc 版本号 9.4.0;尽管本文内容主要涉及无线网络,但读者并不需要对 802.11 标准有所了解。

libiw中的函数说明

打开电脑连接wifi是一件很平常的事情,但这些事情通常都是操作系统下的wifi管理程序替我们完成的,如何在程序中连接指定的wifi其实很少有资料介绍,在网络专栏的文章中,有两篇是关于wfi编程的文章,其中对无线网卡的操作都是通过ioctl()完成的,显得有些繁琐和晦涩,但其实WE(Wireless Extensions)有一个简单的库libiw,这个库的实现也是使用ioctl(),但是经过封装后,会使wifi编程变得容易一些,本文为一篇资料类的文章,主要描述libiw中API的调用方法。

使用ioctl扫描wifi信号获取信号属性的实例(二)

使用工具软件扫描 wifi 信号是一件很平常的事情,在知晓 wifi 密码的前提下,通常我们会尽可能地连接信号质量比较好的 wifi 信号,但是如何通过编程来扫描 wifi 信号并获得这些信号的属性(比如信号强度等),却鲜有文章提及,本文在前面博文的基础上通过实例向读者介绍如何通过编程扫描 wifi 信号,并获得信号的一系列的属性,本文给出了完整的源代码,本文程序在 ubuntu 20.04 下编译测试完成,gcc 版本号 9.4.0;阅读本文并不需要对 IEEE802.11 协议有所了解,但本文实例中大量涉及链表和指针,所以本文可能不适合初学者阅读。

使用epoll()进行socket编程处理多客户连接的TCP服务器实例

在网络编程中,当需要使用单线程处理多客户端的连接时,常使用select()或者poll()来处理,但是当并发数量非常大时,select()和poll()的性能并不好,epoll()的性能大大好于select()和poll(),在编写大并发的服务器软件时,epoll()应该是首选的方案,本文介绍epoll()在网络编程中的使用方法,本文提供了一个具体的实例,并附有完整的源代码,本文实例在 ubuntu 20.04 下编译测试完成,gcc 版本号 9.4.0。

使用poll()代替select()处理多客户连接的TCP服务器实例

在网络编程中,使用 select() 处理多客户端的连接是非常常用的方法,select() 是一个非常古老的方法,在大量连接下会显得效率不高,而且其对描述符的数值还有一些限制,Linux内核从 2.1.13 版以后提供了 poll() 替代 select(),本文介绍 poll() 在网络编程中的使用方法,并着重介绍 poll() 在编程行与 select() 的区别,旨在帮助熟悉 select() 编程的程序员可以很容易地使用 poll() 编程,本文提供了一个具体的实例,并附有完整的源代码,本文实例在 ubuntu 20.04 下编译测试完成,gcc 版本号 9.4.0。