最近写个程序需要获取本机用于连接的IP地址,经过很多的尝试后,最终使用的方法如下:

  1. 使用cmd命令    netstat  | findstr “192.168.6.66:3333” > D:\\localAddress.txt

    其中“192.168.6.66:3333”是我的程序连接的服务器的ip地址,运行netstat命令后,找到其中包含了“192.168.6.66:3333”的那一行,并将结果输出到 localAddress.txt 中,localAddress.txt中的结果可能如下图所示

      

  2.读取 localAddress.txt 中的内容,并解析出本机用于连接的ip地址为 192.168.4.45

  • 我是使用CreateProcess函数运行cmd命令,可以避免出现cmd命令窗口,也能等待cmd命令运行结束再往下运行。

  代码如下:

      std::string path =  "D:\\localAddress.txt";
//创建用于保存本机IP地址的localAddress.txt
std::ofstream fout(path);
if (fout) // 如果创建成功
{
fout << "" << std::endl;
fout.close(); // 执行完操作后关闭文件句柄 std::string ptr;
std::string output;
ptr="cmd /c netstat | findstr \"192.168.6.66:3333 > ";
ptr += path; STARTUPINFO si;
PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
//隐藏掉可能出现的cmd命令窗口
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
ZeroMemory(&pi, sizeof(pi)); // Start the child process.
if (CreateProcess(NULL, // No module name (use command line)
(LPSTR)(LPCTSTR)ptr.c_str(), // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{ // Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE); std::fstream ffileTemp(path); //作为读取文件打开
if (ffileTemp)
{
char buffer[];
while (!ffileTemp.eof())
{
ffileTemp.getline(buffer, , '\n');
std::string temp = buffer;
if (temp.find("ESTABLISHED") != std::string::npos)
{
output += temp;
break;
}
}
ffileTemp.close();
} if (output.length() > )
{
output.erase(, output.find_first_not_of(" "));
std::string localip, temp;
temp = output.substr(output.find_first_of(" "));
temp.erase(, temp.find_first_not_of(" "));
temp = temp.substr(, temp.find_first_of(" ")); localip = temp.substr(, temp.find_first_of(":")); //获得ip地址 }
}
}

C++获取本机用于连接的IP地址的更多相关文章

  1. 【liunx】使用xshell连接虚拟机上的CentOS 7,使用xhell连接本地虚拟机上的Ubuntu, 获取本地虚拟机中CentOS 7的IP地址,获取本地虚拟机中Ubuntu 的IP地址,Ubuntu开启22端口

    注意,如果想用xshell去连接本地虚拟机中的linux系统,需要本地虚拟机中的系统是启动的才能连接!!!!! ============================================ ...

  2. JAVA获取客户端请求的当前网络ip地址(附:Nginx反向代理后获取客户端请求的真实IP)

    1. JAVA获取客户端请求的当前网络ip地址: /** * 获取客户端请求的当前网络ip * @param request * @return */ public static String get ...

  3. Java 获取当前项目所在服务器的 IP 地址

    java中获取当前服务器地址主要使用到InetAddress这个类 public static void main(String[] args) { try { //用 getLocalHost() ...

  4. javascript获取当前用户访问的宽带IP地址

    javascript获取当前用户访问的宽带IP地址 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></sc ...

  5. 如何在SqlServer中获取前端连接的IP地址,计算机名等信息

    在一些需求中,可能我们需要知道连接到SqlServer的前端程序的一些系统信息,比如前端连接的计算机名称,IP地址,什么时候开始请求连接,什么时候结束连接等信息. 如果你对SqlServer的系统函数 ...

  6. C# 获取本机CPU序列号,MAC地址,硬盘ID,本机IP地址,计算机名,物理内存,PC类型

    首先引入服务 然后 调用 本文转载自http://blog.sina.com.cn/s/blog_7eeb43210101hf7f.html public class Computer { publi ...

  7. 获取本机正在使用的ipv4地址(访问互联网的IP)

    [转]原文地址:http://www.cnblogs.com/lijianda/p/6604651.html 1.一个电脑有多个网卡,有线的.无线的.还有vmare虚拟的两个网卡.2.就算只有一个网卡 ...

  8. C#获取本机的外网IP

    /// <summary> /// 功能:获取本地的外网IP地址 /// 作者:黄海 /// 时间:2016-07-22 /// </summary> /// <retu ...

  9. win7 64 位操作系统,进程System,PID为4,扫描连接局域网ip地址的139和445端口

    偶然发现电脑的System进程不间断扫描连接局域网内的其它IP对应的445和139端口,这是个问题. 上网搜索,立即关闭139端口的监听. 方法如下: 本地连接属性-TCP/IP属性-高级-WINS选 ...

随机推荐

  1. selenium中同名的class如何区分

    例子是使用了selenium3.7.0 , python 3.6.2  , 火狐57版本 以下是例子的源码: <!DOCTYPE html><!-- <html> --& ...

  2. [知识积累]python3使用xlwt时写入文档字体颜色和边框样式

    可借鉴的网址:https://www.programcreek.com/python/example/39979/xlwt.Alignment 可以直接通过pip安装xlwt 个人理解: xlwt中对 ...

  3. bzoj 3566: [SHOI2014]概率充电器【树形概率dp】

    设g[u]为这个点被儿子和自己充上电的概率,f[u]为被儿子.父亲和自己充上电的概率 然后根据贝叶斯公式(好像是叫这个),1.P(A+B)=P(A)+P(B)-P(A)*P(B),2.P(A)=(P( ...

  4. bzoj 4517: [Sdoi2016]排列计数【容斥原理+组合数学】

    第一个一眼就A的容斥题! 这个显然是容斥的经典问题------错排,首先考虑没有固定的情况,设\( D_n \)为\( n \)个数字的错排方案数. \[ D_n=n!-\sum_{t=1}^{n}( ...

  5. -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match问题处理

    使用MyEclipse运行Maven项目时报如下错误信息: -Dmaven.multiModuleProjectDirectory system property is not set. Check ...

  6. python general

    everything in python is object assignment is binding a name to an object one object can have several ...

  7. ORA-00845错误原因及解决办法

    故障现象: 用startup命令启动数据库时出现ora-00845错误提示: SQL> startup ORA-00845: MEMORY_TARGET not supported on thi ...

  8. 移动端如何定义字体font-family

    移动端如何定义字体font-family 中文字体使用系统默认即可,英文用Helvetica /* 移动端定义字体的代码 */ body{font-family:Helvetica;} 参考<移 ...

  9. XmlDocument

    XmlDocument增删改查. using System; using System.Collections.Generic; using System.ComponentModel; using ...

  10. NSoup获取网页源代码

    NSoup是JSoup的Net移植版本.使用方法基本一致. 如果项目涉及HTML的处理,强烈推荐NSoup,毕竟字符串截断太苦逼了. 下载地址:http://nsoup.codeplex.com/ # ...