• 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 {
     9 
    10     //-----------------------------------------
    11     // Declare and initialize variables
    12     WSADATA wsaData;
    13     int iResult;
    14 
    15     DWORD dwError;
    16     int i = 0;
    17 
    18     struct hostent *remoteHost;
    19     char *host_name;
    20     struct in_addr addr;
    21 
    22     char **pAlias;
    23     iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    24     if (iResult != 0) {
    25         printf("WSAStartup failed: %d
    ", iResult);
    26         return 1;
    27     }
    28 
    29     host_name = new char[100];
    30     int index = gethostname(host_name,strlen(host_name));
    31     if (0 != index)
    32     {
    33         printf("Error
    ");
    34     }
    35 
    36     printf("Calling gethostbyname with %s
    ", host_name);
    37     remoteHost = gethostbyname(host_name);
    38 
    39     if (remoteHost == NULL) {
    40         dwError = WSAGetLastError();
    41         if (dwError != 0) {
    42             if (dwError == WSAHOST_NOT_FOUND) {
    43                 printf("Host not found
    ");
    44                 return 1;
    45             } else if (dwError == WSANO_DATA) {
    46                 printf("No data record found
    ");
    47                 return 1;
    48             } else {
    49                 printf("Function failed with error: %ld
    ", dwError);
    50                 return 1;
    51             }
    52         }
    53     } else {
    54         printf("Function returned:
    ");
    55         printf("	Official name: %s
    ", remoteHost->h_name);
    56         for (pAlias = remoteHost->h_aliases; *pAlias != 0; pAlias++) {
    57             printf("	Alternate name #%d: %s
    ", ++i, *pAlias);
    58         }
    59         printf("	Address type: ");
    60         switch (remoteHost->h_addrtype) {
    61         case AF_INET:
    62             printf("AF_INET
    ");
    63             break;
    64         case AF_NETBIOS:
    65             printf("AF_NETBIOS
    ");
    66             break;
    67         default:
    68             printf(" %d
    ", remoteHost->h_addrtype);
    69             break;
    70         }
    71         printf("	Address length: %d
    ", remoteHost->h_length);
    72 
    73         i = 0;
    74         if (remoteHost->h_addrtype == AF_INET)
    75         {
    76             while (remoteHost->h_addr_list[i] != 0) {
    77                 addr.s_addr = *(u_long *) remoteHost->h_addr_list[i++];
    78                 printf("	IP Address #%d: %s
    ", i, inet_ntoa(addr));
    79             }
    80         }
    81         else if (remoteHost->h_addrtype == AF_NETBIOS)
    82         {   
    83             printf("NETBIOS address was returned
    ");
    84         }   
    85     }
    86 
    87     return 0;
    88 }
  • 相关阅读:
    牛客练习赛16
    AtCoder Regular Contest 096
    基础实验4-2.8 部落 (25分)--并查集
    进阶实验4-3.3 完全二叉搜索树 (30分)
    进阶实验4-3.2 Windows消息队列 (25分)--建堆
    基础实验4-2.5 关于堆的判断 (25分)---建小顶堆
    基础实验4-2.4 搜索树判断 (25分)--二叉搜索树
    基础实验4-2.1 树的同构 (25分)--二叉树
    案例4-1.7 文件传输 (25分)--并查集
    进阶实验3-3.1 求前缀表达式的值 (25分)--堆栈
  • 原文地址:https://www.cnblogs.com/LCCRNblog/p/3851084.html
Copyright © 2020-2023  润新知