Winsock support
This commit is contained in:
parent
4501f21ae7
commit
486dc5102e
@ -5,6 +5,7 @@
|
|||||||
// spdlog usage example
|
// spdlog usage example
|
||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
void load_levels_example();
|
void load_levels_example();
|
||||||
void stdout_logger_example();
|
void stdout_logger_example();
|
||||||
@ -19,8 +20,8 @@ void multi_sink_example();
|
|||||||
void user_defined_example();
|
void user_defined_example();
|
||||||
void err_handler_example();
|
void err_handler_example();
|
||||||
void syslog_example();
|
void syslog_example();
|
||||||
void custom_flags_example();
|
|
||||||
void udp_example();
|
void udp_example();
|
||||||
|
void custom_flags_example();
|
||||||
|
|
||||||
#include "spdlog/spdlog.h"
|
#include "spdlog/spdlog.h"
|
||||||
#include "spdlog/cfg/env.h" // support for loading levels from the environment variable
|
#include "spdlog/cfg/env.h" // support for loading levels from the environment variable
|
||||||
@ -75,8 +76,8 @@ int main(int, char *[])
|
|||||||
err_handler_example();
|
err_handler_example();
|
||||||
trace_example();
|
trace_example();
|
||||||
stopwatch_example();
|
stopwatch_example();
|
||||||
custom_flags_example();
|
|
||||||
udp_example();
|
udp_example();
|
||||||
|
custom_flags_example();
|
||||||
|
|
||||||
// Flush all *registered* loggers using a worker thread every 3 seconds.
|
// Flush all *registered* loggers using a worker thread every 3 seconds.
|
||||||
// note: registered loggers *must* be thread safe for this to work correctly!
|
// note: registered loggers *must* be thread safe for this to work correctly!
|
||||||
@ -208,13 +209,19 @@ void stopwatch_example()
|
|||||||
spdlog::info("Stopwatch: {} seconds", sw);
|
spdlog::info("Stopwatch: {} seconds", sw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using namespace std::chrono_literals;
|
||||||
void udp_example()
|
void udp_example()
|
||||||
{
|
{
|
||||||
spdlog::sinks::udp_sink_config cfg("127.0.0.1", 11091);
|
spdlog::sinks::udp_sink_config cfg("127.0.0.1", 11091);
|
||||||
auto my_logger = spdlog::udp_logger_mt("udplog", cfg);
|
auto my_logger = spdlog::udp_logger_mt("udplog", cfg);
|
||||||
my_logger->set_level(spdlog::level::debug);
|
my_logger->set_level(spdlog::level::debug);
|
||||||
my_logger->info("hello world");
|
for (int i = 0; i < 10; i++) {
|
||||||
my_logger->info("are you ok");
|
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.
|
// A logger with multiple sinks (stdout and file) - each with a different format and log level.
|
||||||
|
@ -79,9 +79,10 @@ public:
|
|||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
addr_.sin_family = AF_INET;
|
addr_.sin_family = PF_INET;
|
||||||
addr_.sin_port = htons(port);
|
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);
|
socket_ = socket(PF_INET, SOCK_DGRAM, 0);
|
||||||
if (socket_ == INVALID_SOCKET)
|
if (socket_ == INVALID_SOCKET)
|
||||||
@ -113,7 +114,8 @@ public:
|
|||||||
|
|
||||||
void send(const char *data, size_t n_bytes)
|
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);
|
throw_spdlog_ex("sendto(2) failed", errno);
|
||||||
close();
|
close();
|
||||||
|
Loading…
Reference in New Issue
Block a user