//在使用这个函数时先在相应的.cpp文件中添加下面的代码(头文件和库)
#include <iostream>
#include <string>
#include "wtypes.h"
#ifdef _WINDOWS_
#undef _WINDOWS_
#endif
#pragma   comment(lib,   "ws2_32.lib ")
string CTaskDeal::GetLocalIpAddress()
{
WORD wVersionRequested = MAKEWORD(2, 2);
WSADATA wsaData;
if (WSAStartup(wVersionRequested, &wsaData) != 0)
return "";
char local[255] = {0};
gethostname(local, sizeof(local));
hostent* ph = gethostbyname(local);
if (ph == NULL)
return "";
in_addr addr;
HOSTENT *host=gethostbyname(local);
/*当有多个ip时,j就是所有ip的个数   inet_ntoa(*(IN_ADDR*)host->h_addr_list[i] 这里的i就是对应的每个ip
for(int i=0;;i++)
{
cout<<inet_ntoa(*(IN_ADDR*)host->h_addr_list[i])<<endl;
if(host->h_addr_list[i]+host->h_length>=host->h_name)
break;
}
int j = i+1;
*/
memcpy(&addr, ph->h_addr_list[0], sizeof(in_addr)); // 这里的0代表第一个,填1就是第二个了
string localIP;
localIP.assign(inet_ntoa(addr));
WSACleanup();
return localIP;
}

下面是一个简单的小实例

用vector容器将ip存起来,然后逐条打印出来

//GetIP.cpp

#include <iostream>
#include <string>
#include <vector>
#include "wtypes.h"
#ifdef _WINDOWS_
#undef _WINDOWS_
#endif
#pragma   comment(lib,   "ws2_32.lib ")
using namespace std;
vector<string> m_IPlist;
void GetLocalIpAddress()
{
WORD wVersionRequested = MAKEWORD(2, 2);
WSADATA wsaData;
if (WSAStartup(wVersionRequested, &wsaData) != 0)
{
return;
}
char local[255] = {0};
gethostname(local, sizeof(local));
hostent* ph = gethostbyname(local);
if (ph == NULL)
{
return ;
}
in_addr addr;
HOSTENT *host=gethostbyname(local);
string localIP;
//当有多个ip时,j就是所有ip的个数   inet_ntoa(*(IN_ADDR*)host->h_addr_list[i] 这里的i就是对应的每个ip
for(int i=0;;i++)
{
memcpy(&addr, ph->h_addr_list[i], sizeof(in_addr)); //
localIP=inet_ntoa(addr);
m_IPlist.push_back(localIP);
if(host->h_addr_list[i]+host->h_length>=host->h_name)
{
break; //如果到了最后一条
}
}
WSACleanup();
vector<string>::iterator it;
for (it = m_IPlist.begin();it != m_IPlist.end();it++)
{
cout<<it->c_str()<<endl;
}
return;
}
int main()
{
GetLocalIpAddress();
return 0;
}

获取本地ip(一个或多个都能取)相关推荐

  1. Linux下编程获取本地IP地址的常见方法

    代码编译运行平台:Linux 64bits+g++(-m64),-m64表示生成64bits的程序. 在进行Linux网络编程时,经常用到本机IP地址.本文罗列一下常见方法,以备不时之需. 获取本机I ...

  2. 【最新】【获取ip】获取本地ip 获取本机ip地址

    目录: 一.接口介绍: 二.实现方法一 三.实现方法二 一.接口介绍: 大多地址都失效了,现推荐以下地址及使用方法: 获取本地ip地址支持的接口: https://www.taobao.com/hel ...

  3. Linux C 获取本地 ip mac 域名对应 ip

    获取本地 ip 地址,mac,通过域名获取对应的 ip, 是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数), 直接上代码: #include <stdio.h> #in ...

  4. C/C++获取本地IP(适用于多种操作系统)

    前言 下面列举多种方法获取本地IP,这些方法在linux系统下均可运行,有些方法亦可以在Windows和Android下运行. 源码 /*下列几种方法均优先输出非回环IP:127.0.0.1  ine ...

  5. android 获取wifi的ip地址吗,Android开发实现在Wifi下获取本地IP地址的方法

    本文实例讲述了Android开发实现在Wifi下获取本地IP地址的方法.分享给大家供大家参考,具体如下: 代码核心介绍: WifiManager类提供了对设备Wifi功能的管理,包括Wifi开关的打开 ...

  6. JS获取本地IP显示隐藏IP

    JS获取本地IP&显示隐藏IP 前言 JS获取本地IP方法 遇到问题 解决方案 火狐(FireFox)删除隐藏IP 谷歌(Chrome)删除隐藏IP 前言 这段时间一直在搞前端,我一个软件开发 ...

  7. VC 获取本地ip地址

    获取本地IP地址有两种做法.一种是使用gethostname函数,代码如下: [cpp] view plaincopy bool CSocketComm::GetLocalAddress(std::s ...

  8. 【Qt】获取本地IP(IPv4)

    1.问题描述 获取本地IP列表有"127.0.0.1".IPv4.IPv6等,一般使用IPv4,如何从已经获取的IP列表中挑出IPv4. 2.解决方法 QString ipv4; ...

  9. //获取本地IP地址和对端IP地址

    1 //获取本地IP地址 2 CHAR * GetLocalIpAdrr(int fd) 3 { 4 struct sockaddr_in stHost; 5 memset(&stHost, ...

  10. 获取本地ip地址适用于windows和Linux环境

    简写版本 package com.gblfy.util;import java.net.Inet4Address; import java.net.InetAddress; import java.n ...

最新文章

  1. 《JAVA练习题目10》请对图书馆系统中的CatalogItem类、Book类和Recording类进行改造,实现其code属性的自动编码。
  2. java 毫秒转为日期_java将毫秒转化为日期
  3. p4 是否能自动merge
  4. keil5用jlink不到芯片_洛达芯片检测
  5. block传值 链接
  6. 【设计模式】实现线程安全单例模式的五种方式
  7. 如何查看CentOS操作系统版本
  8. Markdown书写软件Typora的使用--图片上传(PicGo与Github/Gitee)及排版
  9. 正面管教读书笔记 02 几个基本概念
  10. 中国肠衣产业调研与投资方向研究报告(2022版)
  11. dcos universe
  12. python打包成exe其他电脑运行不了_将python文件打包成exe程序,复制到每台电脑都可以运行-exe是什么文件...
  13. 低通,高通,带通滤波器,π型滤波器的工作原理
  14. 免费的 PPT 模版资源
  15. [随笔]python之print函数总结
  16. dataview中写入对象_DataView对象
  17. java 中的 while和 do...while语句的区别
  18. 设计原则(5)-迪米特法则
  19. 适配 iphone 微信h5页面
  20. CSS太阳地球月亮转圈圈loading

热门文章

  1. graphics | 基础绘图系统(一)——主函数plot及其参数
  2. vb html table,VB6.0 如何是用 datatable
  3. 秘密网络中使用计算机病毒,利用计算机病毒盗窃网络虚拟财产行为定性分析——以“熊猫烧香”案为例...
  4. 2020受欢迎的20个JavaScript 库
  5. PTA-基础编程题目集-函数题 ……
  6. java实现加权抽样_用Java替换加权采样
  7. 数字图像识别笔记(第一章绪论)
  8. 虹膜归一化:仿射——图解仿射变换的旋转矩阵推导
  9. python+opencv+PIL,在图片和视频中写入中文(汉字)
  10. MLP多层感知机(人工神经网络)原理及代码实现