linux c++如何获取网关

202
2024/12/31 9:31:19
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Linux系统中,你可以使用ip命令或ifconfig命令来获取网关信息

方法1:使用ip命令

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

std::string get_gateway() {
    std::string gateway;
    std::string line;
    std::istringstream iss("/proc/net/route");
    while (std::getline(iss, line)) {
        std::vector<std::string> tokens;
        std::stringstream ss(line);
        std::string token;
        while (std::getline(ss, token, ' ')) {
            tokens.push_back(token);
        }
        if (tokens[0] == "default" && tokens[3] != "0.0.0.0") {
            gateway = tokens[2];
            break;
        }
    }
    return gateway;
}

int main() {
    std::string gateway = get_gateway();
    std::cout << "Gateway: " << gateway << std::endl;
    return 0;
}

方法2:使用ifconfig命令

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <cstdlib>

std::string get_gateway() {
    std::string gateway;
    std::string line;
    std::istringstream iss((std::system("ifconfig") + "\n").c_str());
    while (std::getline(iss, line)) {
        std::vector<std::string> tokens;
        std::stringstream ss(line);
        std::string token;
        while (std::getline(ss, token, ' ')) {
            tokens.push_back(token);
        }
        if (tokens[0] == "default" && tokens[3] != "0.0.0.0") {
            gateway = tokens[2];
            break;
        }
    }
    return gateway;
}

int main() {
    std::string gateway = get_gateway();
    std::cout << "Gateway: " << gateway << std::endl;
    return 0;
}

这两种方法都可以帮助你获取Linux系统中的网关信息。请注意,这些方法可能需要root权限才能正常运行。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: Linux atof函数性能如何提升