C語言實現某個裝置的網路狀態判斷

2020-08-12 16:31:55
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <glob.h>
#include <errno.h>
#include <sys/sysmacros.h>
#include <sys/utsname.h>
#include <sys/mount.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <linux/un.h>
#include <poll.h>
#include <assert.h>
#include <linux/if.h>
#include <linux/types.h>
#include <linux/wireless.h>

int check_assoc(char* ifname)
{
	int socket_id, i;
	struct iwreq wrq;

	socket_id = socket(AF_INET, SOCK_DGRAM, 0);
	strcpy(wrq.ifr_ifrn.ifrn_name, ifname);
	ioctl(socket_id, SIOCGIWAP, &wrq);
	close(socket_id);

	for (i = 0; i < 6; i++)
		if (wrq.u.ap_addr.sa_data[i])
			return 1;
	return 0;
}

int main()
{

    if (check_assoc("apcli0")) 
    {
         printf("裝置網路可用.\n");
	}
	else 
    {
         printf("裝置網路不可用.\n");
	}
    return 0;
}