当前位置: 首页 > news >正文

网站酷站用户体验设计软件

网站酷站,用户体验设计软件,通信网站建设,wordpress插件 订阅有时候#xff0c;写程序的时候需要获取计算机的网络信息#xff0c;比如IP地址、电脑名称、DNS等信息。IP地址和电脑名称是比较容易获取到的#xff0c;而要想获取地址掩码、DNS、网关等信息就有些麻烦了。在Windows下我们一般都是通过从注册表读取这些信息。在Linux怎么做…有时候写程序的时候需要获取计算机的网络信息比如IP地址、电脑名称、DNS等信息。IP地址和电脑名称是比较容易获取到的而要想获取地址掩码、DNS、网关等信息就有些麻烦了。在Windows下我们一般都是通过从注册表读取这些信息。在Linux怎么做呢其实Linux下更加容易一些。因为我们可以拿现成的程序看它的源代码。通过阅读其源代码找到解决该问题的方法。那么看哪个程序的源代码呢如果你使用过Linux并且比较熟悉的话就肯定知道一个命令ifconfig。这个命令和Windows下的ipconfig差不多都可以输出网卡的信息其中就包含DNS、掩码等信息。所以我们可以通过看它的源代码来找到解决该问题的方法。获取系统中的网卡数量 并没有那个系统调用提供网卡数量的获取。但是我们可以通过强大的proc文件系统获取网卡数量的信息。实际上ifconfig也是这样做的请看示例代码如下#include #include #include int GetNetCardCount(){int nCount 0;FILE* f fopen(/proc/net/dev, r);if (!f){fprintf(stderr, Open /proc/net/dev failed!errno:%d\n, errno);return nCount;}char szLine[512];fgets(szLine, sizeof(szLine), f); /* eat line */fgets(szLine, sizeof(szLine), f);while(fgets(szLine, sizeof(szLine), f)){char szName[128] {0};sscanf(szLine, %s, szName);int nLen strlen(szName);if (nLen 0)continue;if (szName[nLen - 1] :) szName[nLen - 1] 0;if (strcmp(szName, lo) 0)continue;nCount;}fclose(f);f NULL;return nCount;}int main(int argc, char* argv[]){printf(NetCardCount: %d\n, GetNetCardCount());return 0;}获取IP、掩码、MAC及网关 获取IP、掩码、MAC和广播地址是比较容易的只需要调用对应的IOCTL即可。只是大家对Linux下的IOCTL可能不太熟悉。却看示例代码void DispNetInfo(const char* szDevName){int s socket(AF_INET, SOCK_DGRAM, 0);if (s 0){fprintf(stderr, Create socket failed!errno%d, errno);return;}struct ifreq ifr;unsigned char mac[6];unsigned long nIP, nNetmask, nBroadIP;printf(%s:\n, szDevName);strcpy(ifr.ifr_name, szDevName);if (ioctl(s, SIOCGIFHWADDR, ifr) 0){return;}memcpy(mac, ifr.ifr_hwaddr.sa_data, sizeof(mac));printf(\tMAC: %02x-%02x-%02x-%02x-%02x-%02x\n,mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);strcpy(ifr.ifr_name, szDevName);if (ioctl(s, SIOCGIFADDR, ifr) 0){nIP 0;}else{nIP *(unsigned long*)ifr.ifr_broadaddr.sa_data[2];}printf(\tIP: %s\n, inet_ntoa(*(in_addr*)nIP));strcpy(ifr.ifr_name, szDevName);if (ioctl(s, SIOCGIFBRDADDR, ifr) 0){nBroadIP 0;}else{nBroadIP *(unsigned long*)ifr.ifr_broadaddr.sa_data[2];}printf(\tBroadIP: %s\n, inet_ntoa(*(in_addr*)nBroadIP));strcpy(ifr.ifr_name, szDevName);if (ioctl(s, SIOCGIFNETMASK, ifr) 0){nNetmask 0;}else{nNetmask *(unsigned long*)ifr.ifr_netmask.sa_data[2];}printf(\tNetmask: %s\n, inet_ntoa(*(in_addr*)nNetmask));close(s);}那么如何获取网关地址呢更加容易但是好像很少有人知道。反正我在网上没有找到有人知道。最后看了nslookup的源代码以后才知道正确的做法。代码如下res_init();for (int i 0; i _res.nscount; i){struct sockaddr* server (structsockaddr*)_res.nsaddr_list[i];printf(Server: %s\n, inet_ntoa(*(in_addr*)(server-sa_data[2])));}代码很简单就不做解释了。怎么获取网关呢这个稍微有点麻烦一些不过和获取网卡数量相似都是通过proc文件系统。这次分析的/proc/net/route文件。我就不再贴出示例代码了。最后我把运行示例程序获取到的信息附上以供大家有个直观的认识eth0:MAC: 08-00-27-98-bf-f3IP: 192.168.1.106BroadIP: 255.255.255.255Netmask: 255.255.255.0Gateway: 192.168.1.1eth1:MAC: 08-00-27-16-f4-bfIP: 192.168.1.108BroadIP: 192.168.1.255Netmask: 255.255.255.0Gateway: 0.0.0.0eth2:MAC: 08-00-27-37-9c-91IP: 0.0.0.0BroadIP: 0.0.0.0Netmask: 0.0.0.0Gateway: 0.0.0.0eth3:MAC: 08-00-27-5a-d2-39IP: 0.0.0.0BroadIP: 0.0.0.0Netmask: 0.0.0.0Gateway: 0.0.0.0NetCardCount: 4DNS 0:  218.2.135.1DNS 1:  61.147.37.1
http://www.yutouwan.com/news/466517/

相关文章:

  • 凡客网上做的网站能否更改域名网页制作中级证书
  • 中国建设银行u盾官方网站扬州高端网站制作
  • 洪泽区做网站英文企业网站开发
  • 网站必须做电子认证吗福建省建设厅考试网站
  • 检测网站是否被做跳转做外贸的有些什么网站
  • 怎么查看网站根目录深圳公司注册官网
  • 导航网站制作教育类网站源码
  • 可以做ps的网站大企业网站建设公司
  • 网站开发资源网广西南宁建设银行最新招聘网站
  • 兰州企业网站建设多少钱企业名录搜索软件下载
  • 做网站软件有哪些东营网站排名
  • 青海省建设厅网站执业seo课程心得体会
  • 网站建设网站需要什么软件网站首页制作的过程
  • 湖南响应式网站方案简单学生的网页代码
  • 网站建设含义百度霸屏全网推广
  • 网站开发有什么好的命题自己搭建app托管平台
  • 好模版网站网站一键备份
  • 深圳有哪些做网站的公司门户网站后台
  • 微网站的建设第一步是什么php语言做网站
  • 慈溪网站制作哪家最便宜网站svg使用
  • 南浔区住房和城乡建设网站杭州vi设计广告公司
  • 江西专业南昌网站建设全国最缺工100个职业表
  • 网站后期维护个人建站怎么做网站好
  • 建立网站ftp是什么个人网站备案名字不同
  • 老鸭窝网站正在建设中房产网站门户系统
  • 简单建优化网站无需技术线上宣传渠道和宣传方式
  • linux wordpress建站教程电子商务主要做什么
  • 门户网站的建设原理青海集团网站建设
  • 北京网站建设价位怎样在百度免费做网站
  • 建设银行信用卡网站是哪个海外红人营销推广