vc ++ ipconfig cmd эквивалент в Windows - PullRequest
0 голосов
/ 22 декабря 2009

Как мне достичь функциональности, указанной в ipconfig для Windows в VC ++? Мне нужно получить информацию о локальном IP-адресе машины, основной IP-адрес против

1 Ответ

1 голос
/ 22 декабря 2009

Ну, люди, раньше я не мог найти что-то полезное, но я нашел решение по этой ссылке .

// GetLocalIP.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <winsock2.h>

int _tmain(int argc, _TCHAR* argv[])
{
    // Add 'ws2_32.lib' to your linker options

    WSADATA WSAData;

    // Initialize winsock dll
    if(::WSAStartup(MAKEWORD(1, 0), &WSAData))
    {
        // Error handling
    }

    // Get local host name
    char szHostName[128] = "";

    if(::gethostname(szHostName, sizeof(szHostName)))
    {
        // Error handling -> call 'WSAGetLastError()'
    }

    // Get local IP addresses
    struct sockaddr_in SocketAddress;
    struct hostent     *pHost        = 0;

    pHost = ::gethostbyname(szHostName);
    if(!pHost)
    {
        // Error handling -> call 'WSAGetLastError()'
    }

    char aszIPAddresses[10][16]; // maximum of ten IP addresses

    for(int iCnt = 0; ((pHost->h_addr_list[iCnt]) && (iCnt < 10)); ++iCnt)
    {
        memcpy(&SocketAddress.sin_addr, pHost->h_addr_list[iCnt], pHost->h_length);
        strcpy(aszIPAddresses[iCnt], inet_ntoa(SocketAddress.sin_addr));
        //std::cout << aszIPAddresses[iCnt] << endln;
    }

    // Cleanup
    WSACleanup();

    return 0;
}
...