Linux下使用ioctl獲取硬體資訊------案例一
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <string.h>
unsigned char g_eth_name[16];
unsigned char g_macaddr[16];
unsigned int g_subnetmask;
unsigned int g_ipaddr;
unsigned int g_broadcast_ipaddr;
//初始化網路,獲取當前網路裝置資訊
void init_net(void)
{
int i ;
int sock;
struct sockaddr_in sin;
struct ifreq ifr;
sock=socket(AF_INET, SOCK_DGRAM, 0);
if(sock==-1)
perror("socket");
strcpy(g_eth_name, "eth0");
strcpy(ifr.ifr_name, g_eth_name);
printf("eth name:\t%s\n", g_eth_name);
//獲取並列印網絡卡地址
if(ioctl(sock, SIOCGIFHWADDR, &ifr) <0 )
perror("ioctl error\n");
memcpy(g_macaddr, ifr.ifr_hwaddr.sa_data,6);
printf("local mac:\t");
for(i=0;i<5;i++)
printf("%.2x:", g_macaddr[i]);
printf("%.2x\n",g_macaddr[i]);
//獲取並列印IP地址
if(ioctl(sock, SIOCGIFADDR, &ifr)<0)
perror("ioctl error\n");
memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
g_ipaddr = sin.sin_addr.s_addr;
printf("local eth0:\t%s\n", inet_ntoa(sin.sin_addr));
//獲取並列印廣播地址
if(ioctl(sock, SIOCGIFBRDADDR, &ifr)<0)
perror("ioctl error\n");
memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
g_broadcast_ipaddr = sin.sin_addr.s_addr;
printf("broadcast:\t%s\n", inet_ntoa(sin.sin_addr));
//獲取並列印子網掩碼
if(ioctl(sock,SIOCGIFNETMASK,&ifr)<0)
perror("ioctl error\n");
memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
g_subnetmask = sin.sin_addr.s_addr;
printf("subnetmask:\t%s\n", inet_ntoa(sin.sin_addr));
close(sock);
}
int main()
{
//initialize
init_net();
//do something
//....
return 0;
}
執行結果:
eth name: eth0
local mac: 34:97:f6:da:6c:ab
local eth0: 192.168.2.33
broadcast: 192.168.2.255
subnetmask: 255.255.255.0
相關推薦
Linux下使用ioctl獲取硬體資訊------案例一
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include
Linux下ioctl獲取介面資訊
一、ifconf和ifreq結構 //ifconf通常是用來儲存所有介面資訊的 //if.h struct ifconf { int ifc_len; /* size of buffer */ union { char *ifcu_buf; /* input fr
獲取PC硬體資訊方法一:利用Java Applet
Java Applet可以執行在網頁上面,實現功能是通過呼叫Java來獲取本地硬碟資訊,前提是本機必須安裝Java環境才能執行,不然會提示你安裝。 下面是程式碼: package com.test; import java.applet.Applet; impo
linux下snmp4j獲取net-snmp的基本資訊
linux下,net-snmp已經提供了完整的snmp服務和框架,尤其是基本的snmp資訊,如sysObjectId、CPU、記憶體等。通過標準的snmp的oid,可以很容易的從net-snmp所提供的服務中獲取這些資訊。但net-snmp的trap功能需要通過指令碼來配置
Linux下C獲取所有可用網絡卡資訊
在Linux下開發網路程式時,經常會遇到需要取本地網路介面名、IP、廣播地址、子網掩碼或者MAC地址等資訊的需求,最常見的辦法是配合巨集SIOCGIFHWADDR、SIOCGIFADDR、SIOCGIFBRDADDR與SIOCGIFNETMASK作為引數呼叫函式
linux下C獲取文件的大小
錯誤代碼 返回 system sys string 文件系統 識別碼 連接 chm 獲取文件大小這裏有兩種方法: 方法一、 範例: unsigned long get_file_size(const char *path) { unsigned lo
從零開始搭建linux下laravel 5.6環境(一)
yum acad 分享圖片 tps .html 啟動 服務 all 從零開始 首先你需要有一臺linux服務器,或者虛擬機,這裏就不贅述了,不會的可以自行百度。 我這裏準備的是一臺騰訊雲服務器,系統為CentOS 7.4 64位。 你可以使用騰訊雲的登錄按鈕登錄到服務器 也
Linux下程式設計獲取本地IP地址的常見方法
轉載於:http://blog.csdn.net/k346k346/article/details/48231933 在進行linux網路程式設計時,經常用到本機IP地址。本文羅列一下常見方法,以備不時之需。 獲取本機IP地址,是一個相當靈活的操作,原因是網路地址的設定非常靈活而且都是允
Linux檢查和收集硬體資訊的常用命令總結
Linux檢查和收集硬體資訊的常用命令總結 作者:尹正傑 版權宣告:原創作品,謝絕轉載!否則將追究法律責任。 Linux基礎真的很重要,基
Linux下java獲取CPU、記憶體、磁碟IO、網路頻寬使用率
原文地址:https://www.cnblogs.com/gisblogs/p/3985393.html 一、CPU 使用proc檔案系統,"proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過p
linux系統上檢視硬體資訊
一:檢視CPU more /proc/cpuinfo | grep "model name" grep "model name" /proc/cpuinfo 如果覺得需要看的更加舒服 grep "model name" /proc/cpuinfo | cut -f2 -d:
批處理獲取硬體資訊
首先宣告:本程式尚未完善,依然在除錯中,以後會根據大家的測試結果不斷更新優化(目前核心程式碼基本完善)! 由於原創區需要一定的許可權才能發表原創作品 實在沒辦法所以在這裡釋出,望管理員見諒! 本程式特性: 1.執行環境判斷,若自身被修改則自動閃退;若PE環境則提示並指引退出;若虛擬機器環境則提示資訊
linux下安裝mysql等資訊
1.安裝 apt-get update;// 第一次的時候,你更新一下你的軟體包的源地址資料; apt-get install mysql-server 2.賬號登陸 mysql -h localhost -u root -p -h資料庫主機 -u使用者 -p密
linux下檢視軟體版本資訊
1. 檢視linux的核心版本,系統資訊: 常用的有三種辦法: uname -a; more /etc/issue; cat /proc/version; 2. 檢視apache的版本資訊,如果是通過yum,或者是rpm安裝的,可以使用rpm -q
Linux下驅動開發除錯技術(一)
驅動程式開發的一個重大難點就是不易除錯。本文目的就是介紹驅動開發中常用的幾種直接和間接的除錯手段,它們是: 使用printk 檢視OOP訊息 使用strace 使用核心內建的hacking選項 使用ioctl方法 使用/proc 檔案系統 使用
LNMP-Linux下Nginx+MySQL+PHP+phpMyAdmin+eAcelerator一鍵安裝包(2009年11月17日更新)
引用www.dachunblog.com LNMP是一個基於CentOS編寫的Nginx、PHP、MySQL、phpMyAdmin、eAcelerator一鍵安裝包。可以在VPS、獨立主機上輕鬆的安裝LNMP生產環境。 LNMP Ver0.3軟體版本說明(2009年11月
linux下tomcat無法訪問問題(換一種說法:無法訪問8080埠)
有時候linux下的tomcat其他機器無法訪問,比如主機無法訪問linux虛擬機器的tomcat,這是因為tocat的埠,linux沒有對外開放,所以只能localhost訪問,但是別的機器訪問不了;解決方法如下 編輯linux的iptables檔案:vi /etc/sy
Linux下ioctl函數理解
簡單 類型 使用 序列號 socket編程 串口 case 通過命令 switch 一、 什麽是ioctl ioctl是設備驅動程序中對設備的I/O通道進行管理的函數。所謂對I/O通道進行管理,就是對設備的一些特性進行控制,例如串口的傳輸波特率、馬達的轉速等等。它的調用個數
ftp使用1——Linux下wget獲取ftp下目錄下檔案
如果某個目錄下有一個檔案可以使用ftp命令: get xxx 如果是某個目錄下有多個檔案(且不需要獲取目錄下子資料夾下的內容): mget * 如果是某個目錄下有子目錄希望獲取所有子目錄: wget -nH -m --ftp-user=myusername--f
linux下C獲取系統時間的方法
asctime(將時間和日期以字串格式表示) 相關函式 time,ctime,gmtime,localtime 表頭檔案 #include<time.h> 定義函式 char * asctime(const struct tm * ti