Winsock support

This commit is contained in:
Chris Love 2021-09-03 10:53:29 -07:00
parent 4501f21ae7
commit 486dc5102e
2 changed files with 16 additions and 7 deletions

View File

@ -5,6 +5,7 @@
// spdlog usage example
#include <cstdio>
#include <chrono>
void load_levels_example();
void stdout_logger_example();
@ -19,8 +20,8 @@ void multi_sink_example();
void user_defined_example();
void err_handler_example();
void syslog_example();
void custom_flags_example();
void udp_example();
void custom_flags_example();
#include "spdlog/spdlog.h"
#include "spdlog/cfg/env.h" // support for loading levels from the environment variable
@ -75,8 +76,8 @@ int main(int, char *[])
err_handler_example();
trace_example();
stopwatch_example();
custom_flags_example();
udp_example();
custom_flags_example();
// Flush all *registered* loggers using a worker thread every 3 seconds.
// note: registered loggers *must* be thread safe for this to work correctly!
@ -208,13 +209,19 @@ void stopwatch_example()
spdlog::info("Stopwatch: {} seconds", sw);
}
using namespace std::chrono_literals;
void udp_example()
{
spdlog::sinks::udp_sink_config cfg("127.0.0.1", 11091);
auto my_logger = spdlog::udp_logger_mt("udplog", cfg);
my_logger->set_level(spdlog::level::debug);
my_logger->info("hello world");
my_logger->info("are you ok");
for (int i = 0; i < 10; i++) {
my_logger->info("hello world {}", i);
#ifndef _WIN32
// sendto() on winsock will drop packets if sent too quickly
std::this_thread::sleep_for(40ms);
#endif
}
}
// A logger with multiple sinks (stdout and file) - each with a different format and log level.

View File

@ -79,9 +79,10 @@ public:
close();
}
addr_.sin_family = AF_INET;
addr_.sin_family = PF_INET;
addr_.sin_port = htons(port);
InetPton(AF_INET, TEXT(host.c_str()), &addr_.sin_addr.s_addr);
addr_.sin_addr.s_addr = INADDR_ANY;
InetPton(PF_INET, TEXT(host.c_str()), &addr_.sin_addr.s_addr);
socket_ = socket(PF_INET, SOCK_DGRAM, 0);
if (socket_ == INVALID_SOCKET)
@ -113,7 +114,8 @@ public:
void send(const char *data, size_t n_bytes)
{
if ((sendto(socket_, data, static_cast<int>(n_bytes), 0, (struct sockaddr *)&addr_, sizeof(struct sockaddr))) == -1)
socklen_t tolen = sizeof(struct sockaddr);
if (sendto(socket_, data, static_cast<int>(n_bytes), 0, (struct sockaddr *)&addr_, tolen) == -1)
{
throw_spdlog_ex("sendto(2) failed", errno);
close();