获取本机IP的函数

新建win32控制台程序,代码如下:

#include <winsock2.h>

#include <stdio.h>

void GetLocalIP();

int main()

{

GetLocalIP();

return 0;

}

void GetLocalIP()

{

char chostname[256] = { 0 };

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );

if (err != 0)

{

return;

}

if ( gethostname( chostname , 256 ) == SOCKET_ERROR )

{

return;

}

struct hostent * phe = gethostbyname( chostname );

if ( phe == NULL )

{

return;

}

if ( phe->h_addr_list[0] == 0 )

{

return;

}

struct in_addr addr;

memcpy( &addr, phe->h_addr_list[0] , sizeof( struct in_addr ) );

DWORD  dw1=inet_addr(inet_ntoa(addr));

WORD  wd1=LOWORD(dw1);//取高十六位

WORD  wd2=HIWORD(dw1);//取低十六位

BYTE  bte1=LOBYTE(wd1);

BYTE  bte2=HIBYTE(wd1);

BYTE  bte3=LOBYTE(wd2);

BYTE  bte4=HIBYTE(wd2);

printf("%d.%d.%d.%d",bte1,bte2,bte3,bte4);

}

正常情况可以直接编译运行,如果遇到LNK2001,无法解析的外部符号..错误,在工程属性[链接器]->[命令行]附加选项中增加Ws2_32.lib,然后重新编译。

时间: 2024-08-08 21:56:06

获取本机IP的函数的相关文章

Linux 获取本机IP、MAC地址用法大全

getifaddrs()和struct ifaddrs的使用,获取本机IP ifaddrs结构体定义如下: C代码   struct ifaddrs { struct ifaddrs  *ifa_next;    /* Next item in list */ char            *ifa_name;    /* Name of interface */ unsigned int     ifa_flags;   /* Flags from SIOCGIFFLAGS */ struc

Linux编程获取本机IP地址

使用函数getifaddrs来枚举网卡IP,其中使用到的结构体如下所示: struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */ char *ifa_name; /* Name of interface */ unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */ struct sockaddr *ifa_addr; /* Address of interface *

批处理--工作当中获取本机ip地址然后执行一个循环启动脚本

<pre name="code" class="cpp"><span style="font-size:18px;">goto :main rem +++++++获取本机ip++++++++++++++++++++++++++++++++++++ :get_local_ip rem 注意 不要照搬某些人的文章,如果你把函数写成setlocal dosomething endlocal 这种结构,那么在这段代码中返回值无法赋

C++获取本机IP等信息

运行环境:VS2008,win7,代码来源于MSDN,相关函数可以查看MSDN中的函数定义.. 代码如下: 1 #include <winsock2.h> 2 #include <ws2tcpip.h> 3 #include <stdio.h> 4 #include <windows.h> 5 #pragma comment(lib, "ws2_32.lib") 6 7 int main(int argc, char **argv) 8

Python3获取本机IP(多网卡)

Python获取本机IP地址的一般方法为 import socket IP = socket.gethostbyname(socket.gethostname()) 通过gethostname获取主机名,再用gethostbyname将主机名转换为IP地址. 那么,问题来了.如果主机有多个网卡/IP,怎样获取某个指定的IP地址呢? 一个方法是通过socket.gethostbyname_ex获取主机IP地址列表,然后遍历列表取得自己需要的IP. 更简单的方法(不用修改代码,还是用socket.g

MFC 获取本机IP、网络ip和物理地址

获取本机Ip CString CNet::GetLocalIP() { WSADATA wsaData; int err = WSAStartup(MAKEWORD(2, 0), &wsaData); if (err != 0) { return ""; } char szHostName[MAX_PATH] = { 0 }; int nRetCode; nRetCode = gethostname(szHostName, sizeof(szHostName)); char*

Python 优雅获取本机 IP 方法

见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 #!/usr/bin/env python # -*- coding: utf-8 -*- import socket import fcntl import struct def get_ip_address(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.i

获取本机IP地址

这里有两种方法: 1 //获取本机IP 2 - (NSString *)localIPAddress 3 { 4 NSString *localIP = nil; 5 struct ifaddrs *addrs; 6 if (getifaddrs(&addrs)==0) { 7 const struct ifaddrs *cursor = addrs; 8 while (cursor != NULL) { 9 if (cursor->ifa_addr->sa_family == AF_

python:使用netifaces模块获取本机IP网关等信息

python获取本机IP有很多种方法,可每种方法都有局限性. 使用netifaces模块获取本机IP网关等信息,需要安装netifaces模块,不管windows还是linux都可以通用. 一.程序: #!/usr/bin/env python2 # -*- coding: utf-8 -*- #实现本地网卡IP #需要安装netifaces模块 def GetNetworkIP():     #获取本地网卡IP地址     import netifaces     #routingGatewa