104 lines
2.8 KiB
C++
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;
|
|
// }
|