linux C++ 获取服务器外网IP地址(使用系统调用system)
2023-09-14 08:59:54 时间
废话不多说,直接贴代码:
#include<string.h> #include<stdlib.h> #include<stdio.h> #include<string> int _System(const std::string cmd, std::string &output) { FILE * fp; int res = -1; if ((fp = popen(cmd.c_str(), "r") ) == NULL) { printf("Popen Error!\n"); return -2; } else { char pRetMsg[10240]={0}; //get lastest result while(fgets(pRetMsg,10240, fp) != NULL) { output+=pRetMsg; } if ( (res = pclose(fp)) == -1) { printf("close popenerror!\n"); return -3; } return 0; } } int main() { //test cmd //char *cmd = "lsmod"; std::string cmd = "curl -s members.3322.org/dyndns/getip"; int ret = 0; std::string result; ret = _System(cmd, result); printf("ret = %d \nresult = %s\nlength = %d \n", ret, result.c_str(),result.length()); return 0; }
运行结果:
[login@server ~]$ g++ callsystemrt.cpp && ./a.out ret = 0 result = 120.132.101.54 length = 15
本来想用C++socket来获得的,不过太麻烦,还不如直接通过 管道,来调用 system 系统回调.
可以做成配置,把 cmd 放到配置中,如果发现不起作用了,换一个其他的获取ip的第三方ip地址,并用 shell来筛选出ip地址,这样C++也不需要做处理,拿过来直接使用就好.
相关文章
- 安装Linux服务器安装 免费、快捷、安全(linux服务器免费)
- Linux:为技术控服务的人(什么人用linux)
- Linux 星际译王:最新版本下载(linux星际译王下载)
- 如何优化Linux服务器性能(linux服务器性能调整)
- Linux服务器流量实时监测,保障系统安全(linux服务器流量监控)
- 构建Linux视频缓存服务器,实现更流畅的视频体验(linux视频缓存服务器)
- 快速掌握Linux的窍门(如何快速学习linux)
- 使用SSH工具连接Linux服务器(ssh工具连接linux)
- Linux网络端口问题排查指南(linux端口问题)
- 部署阿里云快捷部署Linux服务器简易指南(阿里linux服务器)
- 解决Linux服务器磁盘空间不足的方法(linux服务器磁盘空间)
- Linux登陆FTP服务器的方法详解(linux如何登陆ftp)
- Linux 硬件虚拟化:开启新科技时代(linux硬件虚拟机)
- Linux服务器安装指南:简易步骤解析(linux服务器安装教程)
- 探索Linux下查看端口进程的方法(查看端口进程linux)
- 深度揭秘:Linux系统的安全优化之道(linux系统安全优化)
- 重启Linux:关闭防火墙(关闭linux的防火墙)
- 服务搭建Linux下搭建DNS服务器的全攻略(linux下dns)
- 安装一步一步教你安装Linux服务器(linux服务器iso)
- 批处理:Linux 上的自动化利器(批处理linux)
- Linux禁用自动更新:指南(linux关闭自动更新)
- 轻松掌握Linux调整时间命令:快速实现时间同步与校准(linux调整时间命令)
- 令人惊叹的Linux服务器:型号介绍(linux 服务器型号)
- 探索Linux服务器日志背后的故事(查看linux服务器日志)
- Linux:实现两个IP地址的高效切换(linux两个ip地址)