剑痴乎

  • 首页
  • 文章分类
    • 音视频
    • WebRTC
    • 编程之美
    • Linux
    • Windows
    • 生活点滴
    • 校园生活
  • 参考
    • API参考
    • 实用工具
    • 测试音视频
    • 文档
  • 留言板
  • 关于
剑痴乎
代码为剑,如痴如醉
  1. 首页
  2. 编程之美
  3. 正文

VC++获取本机IP地址

2015年6月19日 2345点热度 4人点赞 0条评论

IP地址分内网的与外网的,通过下面的VC代码可以获取本机IP(如果连接路由器,会得到两个IP地址,一个内网(192.168.1.*)的,一个外网的)。

VC++获取本机IP
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <winsock2.h>
#pragma comment(lib, "WS2_32") // 链接到WS2_32.lib
 
class CInitSock
{
public:
CInitSock(BYTE minorVer = 2, BYTE majorVer = 0)
{
// 初始化WS2_32.dll
WSADATA wsaData;
WORD sockVersion = MAKEWORD(minorVer, majorVer);
if(::WSAStartup(sockVersion, &wsaData) != 0)
{
exit(0);
}
}
~CInitSock()
{
::WSACleanup();
}
};
 
int main()
{      
CInitSock initSocket;
char szHost[256]= "";
char szIp[256] = "";
//取得本地主机名
::gethostname(szHost,256);
//通过主机名得到地址信息
hostent *pHost = ::gethostbyname(szHost);
 
in_addr addr;
for(int i = 0;;i++)
{
//p指向一个32位的IP地址
char *p = pHost->h_addr_list[i];
if (p == NULL)
{
break;
}
memcpy(&addr.S_un.S_addr,p,pHost->h_length);
char *szIpTemp = ::inet_ntoa(addr);
std::cout<<"本机IP:"<<szIpTemp<<"\n";
strcpy_s(szIp,szIpTemp);
}
return 0;
}

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: C++
最后更新:2015年6月19日

Jeff

管理员——代码为剑,如痴如醉

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

相关文章
  • 网络字节转换到本地字节的函数模板
  • MFC自绘带背景颜色标题栏
  • FLTK程序编译错误
  • C++实现windows重启
  • Windows下获取当前屏幕分辨率

COPYRIGHT © 2025 jianchihu.net. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang