diff options
author | crupest <crupest@outlook.com> | 2021-05-27 15:13:46 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-05-27 15:13:46 +0800 |
commit | a1192a14c6a52e8ab77e1c84e38b65aa5e250bec (patch) | |
tree | 50d2653f664a6aaf5593da6837b78294dc9715f5 /works/life/main.cpp | |
parent | 6c0e4b64fa9967b2a2ef7dfb840cab3a8325f67e (diff) | |
download | crupest-a1192a14c6a52e8ab77e1c84e38b65aa5e250bec.tar.gz crupest-a1192a14c6a52e8ab77e1c84e38b65aa5e250bec.tar.bz2 crupest-a1192a14c6a52e8ab77e1c84e38b65aa5e250bec.zip |
import(life): Add computer network experiment.
Diffstat (limited to 'works/life/main.cpp')
-rw-r--r-- | works/life/main.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
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 <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;
+}
|