C语言获得电脑的IP地址的小例子

代码如下:

#include <stdio.h>
 #include <winsock2.h>

#pragma comment(lib, "WS2_32.lib")

int main()
 {
     char host_name[256]; // define host name (for example:xxx-PC)
     int WSA_return, i;
     WSADATA WSAData;
     HOSTENT *host_entry; // record host information
     WORD  wVersionRequested;

wVersionRequested = MAKEWORD(2, 0);
     WSA_return = WSAStartup(wVersionRequested, &WSAData); // initialize Winsock service and then call other socket or dll file

if (WSA_return == 0) // initialize success
     {
         gethostname(host_name, sizeof(host_name));
         host_entry = gethostbyname(host_name);

for(i = 0; host_entry != NULL && host_entry->h_addr_list[i] != NULL; ++i)
         {
             // define pszAddr to record IP
             // inet_ntoa: Convert an IP into an Internet standard dotted format string
             const char *pszAddr = inet_ntoa (*(struct in_addr *)host_entry->h_addr_list[i]);
             printf("[IP]\t%s\n[Name]\t%s\n\n", pszAddr, host_name);
         }
     }
     else
     {
         printf("ERROR\n");
     }
     /* WSACleanup() finish use Winsock 2 DLL (Ws2_32.dll). Head:Winsock2.h. reference #pragma comment(lib, "ws2_32.lib") */
     WSACleanup();
     return 0;
 }

(0)

相关推荐

  • c++实现发送http请求通过get方式获取网页源代码

    复制代码 代码如下: #include <stdio.h>#include <windows.h>#include <wininet.h>#define MAXSIZE 1024#pragma comment(lib, "Wininet.lib") void urlopen(_TCHAR*); int _tmain(int argc, _TCHAR* argv[]){    urlopen(_T("http://www.jb51.net&q

  • C++实现获取IP、子网掩码、网关、DNS等本机网络参数的方法

    本文以一个完整实例形式介绍了C++实现获取IP.子网掩码.网关.DNS等本机网络参数的方法,供大家参考,具体的完整实例如下: #pragma comment(lib,"Ws2_32.lib") #include <Iphlpapi.h> #pragma comment(lib, "Iphlpapi.lib") using namespace std; typedef struct tagNetworkCfg { char szIP[18]; char s

  • 怎么通过C语言自动生成MAC地址

    最近在做虚拟机项目时,需要给创建的每一个虚拟机自动生成一个MAC地址,由于MAC地址为48位,而且格式是以:隔开的,所以下面我写了一个c程序,来自动生成MAC地址. 复制代码 代码如下: //   MAC.c#include<stdio.h>#include<stdlib.h>#include<time.h>#include<unistd.h> #define RANDOM(x) (rand()%x)#define MAC_ADDR_LENGTH 12#de

  • C++获取当前进程IAT的方法

    本文实例讲述了C++获取当前进程IAT的方法,分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: #include <windows.h> #include <stdio.h> int main(int argc, char* argv[]) {  HMODULE hModule = ::GetModuleHandleA(NULL);  IMAGE_DOS_HEADER* pDosHeader = (IMAGE_DOS_HEADER*)hModule;  IMAGE_

  • C++获取本机登陆过的QQ号码示例程序

    先看效果图,代码在下面 复制代码 代码如下: // FileName: GetQQ.h #pragma once #include <vector> class GetQQ{private:    std::vector<CString> m_qqNum; public:    GetQQ();    ~GetQQ();public: // 获取QQ号码    std::vector<CString> Init(void);}; 复制代码 代码如下: // FileNa

  • C++中获取UTC时间精确到微秒的实现代码

    在日常开发过程中经常会使用到时间类函数的统计,其中获取1970年至今的UTC时间是比较常使用的,但是在windows下没有直接能够精确到微妙级的函数可用.本文提供方法正好可以解决这类需求问题. 下面先给出C++实现代码: 复制代码 代码如下: #ifndef UTC_TIME_STAMP_H_#define UTC_TIME_STAMP_H_ #include <windows.h>#include <sys/timeb.h>#include <time.h> #if

  • C++访问注册表获取已安装软件信息列表示例代码

    复制代码 代码如下: // ---------------------------------------------------------------// FlieNmae: //   SofInfo.h// Remark://   通过读取注册表获得本机已安装软件信息.// ---------------------------------------------------------------#pragma once#include <vector> struct SoftInfo

  • C++获取zip文件列表方法

    // ZipFile.h // #ifndef ZIPFILE_H #define ZIPFILE_H #include <string> #include <vector> #define ZIP_OK 0 #define ZIP_ERR_OPEN 1 #define ZIP_ERR_WRONG_FILE 2 #define ZIP_ERR_WRONG_HEADER 3 #define BYTE unsigned char #define ui32 unsigned int #d

  • c语言中单引号和双引号的区别(顺利解决从字符串中提取IP地址的困惑)

    问题:从c++文件中将std:string转换为char*后,返回包含IP地址的char*,需要将该字符串char*中的IP地址提取出来: 解决办法:1. 解决思路:IP地址最长为12字符+3句点=15字符,一般性表示为192.168.111.111:可以从第一个字符开始解析,当不是'.'时,将所有字符保存下来,然后把所有保存下来的字符转换为16进制就可以了: 2. 程序如下: 复制代码 代码如下: typedef struct {    char addr_ipv4[4];} IPADDR_I

  • C++获取本机MAC,IP,MASK地址的方法

    本文实例讲述了C++获取本机MAC,IP,MASK地址的方法,分享给大家供大家参考.具体方法如下: 复制代码 代码如下: #include "InitSock.h"  #include <stdio.h>    #include <iphlpapi.h>  #pragma comment(lib, "IPHLPAPI.lib")    u_char g_ucLocalMac[6];  DWORD g_dwGatewayIP;  DWORD g

随机推荐