blob: efb5bff3b7287a6a67cd469956077ea0b5cd6be1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <WinSock2.h>
#include <Windows.h>
#include <cassert>
#include <iostream>
#include <iphlpapi.h>
#include <string>
std::wstring ToString(const SOCKET_ADDRESS &addr) {
DWORD buffer_length = 100;
wchar_t buffer[100];
auto error = WSAAddressToStringW(addr.lpSockaddr, addr.iSockaddrLength, NULL,
buffer, &buffer_length);
assert(error == 0);
return std::wstring(buffer);
}
int main() {
WSADATA wsaData;
int error = WSAStartup(MAKEWORD(2, 0), &wsaData);
assert(error == 0);
ULONG buffer_size = 100000;
PIP_ADAPTER_ADDRESSES_LH buffer =
(PIP_ADAPTER_ADDRESSES_LH)malloc(buffer_size);
ULONG error2 = GetAdaptersAddresses(
AF_INET,
GAA_FLAG_INCLUDE_PREFIX | GAA_FLAG_INCLUDE_GATEWAYS |
GAA_FLAG_INCLUDE_ALL_INTERFACES | GAA_FLAG_SKIP_MULTICAST,
NULL, buffer, &buffer_size);
assert(error2 == ERROR_SUCCESS);
std::wcout << ToString(buffer->FirstPrefix->Address) << L"\n";
std::wcout << buffer->FirstGatewayAddress << L"\n";
return 0;
}
|