mirror of
https://github.com/wichtounet/thor-os.git
synced 2025-09-16 16:11:42 -04:00
Complete the UDP server
This commit is contained in:
parent
81b773ccf4
commit
4b49ffbd9b
@ -10,7 +10,9 @@
|
|||||||
#include <tlib/print.hpp>
|
#include <tlib/print.hpp>
|
||||||
#include <tlib/net.hpp>
|
#include <tlib/net.hpp>
|
||||||
#include <tlib/dns.hpp>
|
#include <tlib/dns.hpp>
|
||||||
|
|
||||||
static constexpr const size_t timeout_ms = 5000;
|
static constexpr const size_t timeout_ms = 5000;
|
||||||
|
static constexpr const size_t server_timeout_ms = 10000;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
@ -191,24 +193,33 @@ int netcat_udp_server(const tlib::ip::address& local, size_t port){
|
|||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
// Make sure we don't wait for more than the timeout
|
// Make sure we don't wait for more than the timeout
|
||||||
if (after > before + timeout_ms) {
|
if (after > before + server_timeout_ms) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto remaining = timeout_ms - (after - before);
|
auto remaining = server_timeout_ms - (after - before);
|
||||||
|
|
||||||
auto size = sock.receive(message_buffer, 2048, remaining);
|
tlib::inet_address address;
|
||||||
|
|
||||||
|
auto size = sock.receive_from(message_buffer, 2048, remaining, &address);
|
||||||
if (!sock) {
|
if (!sock) {
|
||||||
if (sock.error() == std::ERROR_SOCKET_TIMEOUT) {
|
if (sock.error() == std::ERROR_SOCKET_TIMEOUT) {
|
||||||
sock.clear();
|
sock.clear();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
tlib::printf("nc: receive error: %s\n", std::error_message(sock.error()));
|
tlib::printf("nc: receive_from error: %s\n", std::error_message(sock.error()));
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
message_buffer[size] = '\0';
|
message_buffer[size] = '\0';
|
||||||
tlib::print(message_buffer);
|
tlib::print(message_buffer);
|
||||||
|
|
||||||
|
sock.send_to(message_buffer, size, &address);
|
||||||
|
|
||||||
|
if (!sock) {
|
||||||
|
tlib::printf("nc: send_to error: %s\n", std::error_message(sock.error()));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
after = tlib::ms_time();
|
after = tlib::ms_time();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user