From a1192a14c6a52e8ab77e1c84e38b65aa5e250bec Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 27 May 2021 15:13:46 +0800 Subject: import(life): Add computer network experiment. --- works/life/main.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 works/life/main.cpp (limited to 'works/life/main.cpp') diff --git a/works/life/main.cpp b/works/life/main.cpp new file mode 100644 index 0000000..efb5bff --- /dev/null +++ b/works/life/main.cpp @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include +#include + +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; +} -- cgit v1.2.3