c、c++混编实现查询本地IP地址
一、思路
1、要想得到本地IP地址,可以通过本机名来查询,所以首先得得到本机名。
2、牵涉到IP地址,首先想到牵涉到网络协议,因此得加载套接字协议,所以先使用WSAStartup函数完成对Winsock服务的初始化。
二、步骤
三、实现程序的模块化
1、包含文件工作
#include <iostream.h>
#include <winsock2.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib") bool GetLocalAddr();
2、网络协议初始化工作
WSADATA wsaData;
WORD wVersionRequested;
wVersionRequested = MAKEWORD(,);
int initWSA = WSAStartup(wVersionRequested,&wsaData);
3、通过主机名来获取本地连接的IP地址
if ( == initWSA)
{
cout << "初始化完成!" << endl; // 获取主机名
char hostName[];
int iRet = gethostname(hostName,sizeof(hostName));
if (iRet != )
{
cout << "获取主机名失败!" << endl;
return false;
} // 通过主机名获取地址
//
hostent *hostInfo;
hostInfo = gethostbyname(hostName);
if (NULL == hostInfo)
{
cout << "通过主机名获取地址失败!" << endl;
return false;
} // 将网络地址转换成字符串,以便观看
char *IPAddr;
IPAddr = inet_ntoa(*(struct in_addr *)*hostInfo->h_addr_list);
cout << IPAddr << endl; // 卸载Winsock库,并释放所有资源
WSACleanup(); return true;
}
else
return false;
四、完整的程序
#include <iostream.h>
#include <winsock2.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib") bool GetLocalAddr(); int main(void)
{
GetLocalAddr();
return ;
} bool GetLocalAddr()
{
// 初始化Winsock库
WSADATA wsaData;
WORD wVersionRequested;
wVersionRequested = MAKEWORD(,);
int initWSA = WSAStartup(wVersionRequested,&wsaData); if ( == initWSA)
{
cout << "初始化完成!" << endl; // 获取主机名
char hostName[];
int iRet = gethostname(hostName,sizeof(hostName));
if (iRet != )
{
cout << "获取主机名失败!" << endl;
return false;
} // 通过主机名获取地址
hostent *hostInfo;
hostInfo = gethostbyname(hostName);
if (NULL == hostInfo)
{
cout << "通过主机名获取地址失败!" << endl;
return false;
} // 将网络地址转换成字符串,以便观看
char *IPAddr;
IPAddr = inet_ntoa(*(struct in_addr *)*hostInfo->h_addr_list);
cout << IPAddr << endl; // 卸载Winsock库,并释放所有资源
WSACleanup(); return true;
}
else
return false;
}
c、c++混编实现查询本地IP地址的更多相关文章
- 查询本地ip以及ip地址库查询
四种方法查询本地ip from urllib2 import urlopen from json import load my_ip = urlopen('http://ip.42.pl/raw'). ...
- 获取本地IP地址信息
2012-06-05 /// <summary> /// 获取本地IP地址信息 /// </summary> void G ...
- 获取Mac、CPUID、硬盘序列号、本地IP地址、外网IP地址OCX控件
提供获取Mac.CPUID.硬盘序列号.本地IP地址.外网IP地址OCX控件 开发语言:vc++ 可应用与WEB程序开发应用 <HTML><HEAD><TITLE> ...
- python获取本地ip地址的方法
#_*_coding:utf8_*_ #以下两种方法可以在ubuntu下或者windows下获得本地的IP地址 import socket # 方法一 localIP = socket.gethost ...
- C# — 动态获取本地IP地址及可用端口
1.在VS中动态获取本地IP地址,代码如下: 2.获取本机的可用端口以及已使用的端口:
- Android 获得本地IP地址、外网IP地址、本设备网络状态信息、本地Mac地址
本地内网IP和外网IP的区别: 根据我的经验一台电脑需要两个ip才可以上网,一个是本地的内网ip 一个是外网的ip 本地的ip 一般是192.168.1.2这种样子 只要在不同的路由器上可以重复 外 ...
- .net获取本地ip地址
整理代码,.net获取本地ip地址,代码如下: string name = Dns.GetHostName(); IPHostEntry IpEntry = Dns.GetHostEntry(name ...
- 获取本地IP地址的vc代码
作者:朱金灿 来源:http://blog.csdn.net/clever101 获取本地IP地址有两种做法.一种是使用gethostname函数,代码如下: bool CSocketComm::Ge ...
- 读取本地IP地址和子网页码
#region 读取本地IP地址和子网页码 //读取本地IP地址和子网页码 NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterf ...
随机推荐
- mao/reduce实现求平均值
import java.io.*; import java.util.*; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io. ...
- curl伪造ip
//随机IP function Rand_IP(){ $ip2id= round(rand(, ) / ); //第一种方法,直接生成 $ip3id= round(rand(, ) / ); $ip4 ...
- poj 3468 A Simple Problem with Integers【线段树区间修改】
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 79137 ...
- Power of Cryptography
//只用一行核心代码就可以过的天坑题目............= = 题目: Description Current work in cryptography involves (among othe ...
- Yii2 验证码
没有用默认的layout 验证码点击不会改变 下面是静态页面代码 <div class="col-sm-12 login"> <div class=" ...
- Linux无处不在
Linux is Everywhere从政府.教育.商业和非盈利组织.科研机构几个方面展示了现在都有哪些地方用了Linux.
- Android Dev
[2015-04-22 13:30:37 - branch_1.5.1_WelcomeActivity] R.java was modified manually! Reverting to gene ...
- adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决
adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决 在ubuntu14.04下,搭建Android开发环境,下载官方的adt- ...
- careercup-链表 2.3
2.3 实现一个算法,删除单向链表中间的某个结点,假设你只能访问该结点.(即你不知道头结点) 这个问题的关键是你只有一个指向要删除结点的指针,如果直接删除它,这条链表就断了. 但你又没办法得到该结点之 ...
- LabView 快捷键
对象调整和移动Shift-click 选择多个对象,在现有选择的基础上添加对象(方向键) 以一个像素为单位移动所选对象Shift- 以几个像素为单位移动所选对象Shift-click (拖动对象) 在 ...