tcp-lib/src/main.cpp
2025-04-19 02:35:03 +02:00

104 lines
2.8 KiB
C++

#include "tcp.hpp"
#include <cstddef>
#include <spdlog/spdlog.h>
int main() {
spdlog::set_level(spdlog::level::debug);
tcp::NonBlockingServer server{{.port = 65432}};
if (auto res = server.start_listening(); !res) {
spdlog::error("Failed to start server: {}", res.error());
return 1;
}
spdlog::info("Server started, waiting for connections...");
while (true) {
while (!server.next_client_available())
;
if (auto res = server.accept_next_client(); !res) {
spdlog::error("Failed to accept client: {}", res.error());
continue;
}
spdlog::info("Client connected");
std::array<std::byte, 1024> buffer;
while (!server.data_available())
;
auto recvRes = server.recv(std::span(buffer));
if (!recvRes) {
spdlog::error("Failed to receive data: {}", recvRes.error());
break;
}
spdlog::info("Received message: {}",
std::string(reinterpret_cast<const char*>(buffer.data()),
recvRes.value()));
const char* msg = "Hello, world!";
auto sendRes = server.send(std::as_bytes(std::span(msg, strlen(msg))));
if (!sendRes) {
spdlog::error("Failed to send message: {}", sendRes.error());
} else {
spdlog::info("Sent {} bytes", sendRes.value());
}
server.disconnect();
}
}
// int main() {
// spdlog::set_level(spdlog::level::debug);
//
// tcp::NonBlockingClient client;
//
// tcp::HostString host = {"localhost"};
// uint16_t port = 65432;
//
// spdlog::info("Connecting to {}:{}", host.data(), port);
//
// if (!client.connect(host, port)) std::terminate();
//
//
// int status = EINPROGRESS;
// while (status == EINPROGRESS) {
// auto statusRes = client.get_last_connection_status();
// if (!statusRes) std::terminate();
// status = statusRes.value();
// }
//
// char buffer[1024];
//
// while (!client.data_available())
// ;
//
// auto recvRes = client.recv(std::span<char>(buffer, sizeof(buffer)));
//
// if (!recvRes) {
// std::terminate();
// }
//
// spdlog::info("Received {} bytes", recvRes.value());
// if (recvRes.value() > 0) {
// spdlog::info("Received message: {}",
// std::string(buffer, recvRes.value()));
// }
//
// EINPROGRESS;
//
// const char* msg = "Hello, world!";
// auto sendRes = client.send(std::span<const char>(msg,
// strlen(msg))); if (!sendRes) {
// spdlog::error("Failed to send message");
// std::terminate();
// }
// spdlog::info("Sent {} bytes", sendRes.value());
// client.disconnect();
//
// return 0;
// }