我是靠谱客的博主 酷酷樱桃,最近开发中收集的这篇文章主要介绍用c/c++实现linux下检测网络接口状态,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要写个检测网络接口链接状态的东西,又不喜欢不断的ping别的地址,也不想调用其他命令行工具来做这个,于是在google了n多内容未果之后,搜刮到个检测工具的源代码

以下代码在fedora 9 / CentOS 5.2下调试通过:)

#include <sys/types.h>
#include <string.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <errno.h>
#include <net/if.h>

struct ethtool_value {
        __uint32_t      cmd;
        __uint32_t      data;
};

int main(int , char* [])
{
    struct ethtool_value edata;
    int fd = -1, err = 0;
    struct ifreq ifr;

        memset(&ifr, 0, sizeof(ifr));
        strcpy(ifr.ifr_name, "eth0");
        fd = socket(AF_INET, SOCK_DGRAM, 0);
        if (fd < 0) {
                perror("Cannot get control socket");
                return 70;
        }

        edata.cmd = 0x0000000a;
        ifr.ifr_data = (caddr_t)&edata;
        err = ioctl(fd, 0x8946, &ifr);
        if (err == 0) {
                fprintf(stdout, "Link detected: %s/n",
                        edata.data ? "yes":"no");
        } else if (errno != EOPNOTSUPP) {
                perror("Cannot get link status");
        }
   return 0;
}


最后

以上就是酷酷樱桃为你收集整理的用c/c++实现linux下检测网络接口状态的全部内容,希望文章能够帮你解决用c/c++实现linux下检测网络接口状态所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部