7 #pragma comment(lib, "ws2_32.lib") 12 using error::WinSockError;
19 ret = ::WSAStartup(MAKEWORD(2, 2), &wsaData);
21 throw WinSockError(
"WSAStartup() failed", ret);
24 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
26 throw WinSockError(
"WSAStartup() failed", ret);
30 debug::writef(L
"wVersion = %d.%d", LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion));
31 debug::writef(L
"wHighVersion = %d.%d", LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));
38 int ret = ::WSACleanup();
40 int err = ::WSAGetLastError();
void writef(const wchar_t *fmt,...) noexcept
Write debug message using format string like printf.
void writeLine(const wchar_t *str=L"") noexcept
Write debug string and new line.
std::unique_ptr< wchar_t[]> utf82wc(const char *in)
UTF-8 to wide char.