#include "../src/netlib.hpp"
#include
#include
void exit_handler(int s){
std::cout << "Goodbye!" << std::endl;
exit(EXIT_SUCCESS);
}
int main(int argc, char** argv) {
signal (SIGINT, exit_handler);
uint16_t port = 8888;
std::string bind_host = "localhost";
if (argc == 3) {
bind_host = argv[1];
port = std::atol(argv[2]);
}
std::cout << "Creating echo server on " << bind_host << ":" << port << std::endl;
std::cout << "CTRL+C shuts down the server." << std::endl;
netlib::server server;
server.register_callback_on_connect(
[&](netlib::client_endpoint endpoint) -> netlib::server_response {
std::string ip = netlib::endpoint_accessor::ip_to_string(endpoint.addr, endpoint.addr_len).value();
std::cout << "Client connected! IP: " << ip << std::endl;
return {};
});
server.register_callback_on_recv(
[&](netlib::client_endpoint endpoint,
const std::vector &data) -> netlib::server_response{
std::cout << "Client sent some data, echoing it back!" << std::endl;
return {.answer = data};
});
std::error_condition server_create_res = server.create(bind_host,
static_cast(port),
netlib::AddressFamily::IPv4,
netlib::AddressProtocol::TCP);
if (server_create_res) {
std::cerr << "Error initializing server: " << server_create_res.message() << std::endl;
}
while (true) {
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
}