19#pragma comment(lib, "Ws2_32.lib")
20#pragma comment(lib, "Mswsock.lib")
21#pragma comment(lib, "AdvApi32.lib")
37 auto rv = ::WSAStartup(MAKEWORD(2, 2), &wsaData);
47 ::FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, last_error,
48 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, (
sizeof(buf) /
sizeof(
char)),
NULL);
68 addr_.sin_family = PF_INET;
69 addr_.sin_port = htons(port);
70 addr_.sin_addr.s_addr = INADDR_ANY;
71 if (InetPtonA(PF_INET, host.c_str(), &
addr_.sin_addr.s_addr) != 1)
78 socket_ = ::socket(PF_INET, SOCK_DGRAM, 0);
87 if (::setsockopt(
socket_, SOL_SOCKET, SO_SNDBUF,
reinterpret_cast<const char*
>(&option_value),
sizeof(option_value)) < 0)
107 socklen_t tolen =
sizeof(
struct sockaddr);
108 if (::sendto(
socket_,
data,
static_cast<int>(n_bytes), 0, (
struct sockaddr*)&
addr_, tolen) == -1)
#define PHOTON_CLOSE
Definition Socket.hpp:38
#define WSAGetLastError()
Definition Socket.hpp:30
Definition udp_client-windows.h:29
static constexpr int TX_BUFFER_SIZE
Definition udp_client-windows.h:30
static void init_winsock_()
Definition udp_client-windows.h:34
void cleanup_()
Definition udp_client-windows.h:53
SOCKET socket_
Definition udp_client-windows.h:31
~udp_client()
Definition udp_client-windows.h:95
static void throw_winsock_error_(const std::string &msg, int last_error)
Definition udp_client-windows.h:44
sockaddr_in addr_
Definition udp_client-windows.h:32
udp_client(const std::string &host, uint16_t port)
Definition udp_client-windows.h:64
void send(const char *data, size_t n_bytes)
Definition udp_client-windows.h:105
SOCKET fd() const
Definition udp_client-windows.h:100
#define INVALID_SOCKET
Definition Config.hpp:44
SPDLOG_INLINE void throw_spdlog_ex(const std::string &msg, int last_errno)
Definition common-inl.h:75
#define NULL
Definition strtod.cpp:30
annotation details
Definition tag_strings.h:125