#include "easysock.hpp" #include /* Server class - Defines a TCP/UDP server. - The constructor takes in a **local** address and port, on which the server listens. */ class Server { private: int ip_ver; char protocol; int port; int sock_fd; std::string address; void create_socket() { struct sockaddr* dest = (struct sockaddr *)malloc(sizeof(struct sockaddr)); this->sock_fd = create_local(this->ip_ver, this->protocol, this->address.data(), this->port, dest); } public: Server(int ip_ver, char protocol, int port) { /* Error checking */ if (ip_ver != 4 && ip_ver != 6) { throw std::invalid_argument("Invalid IP address type"); } if (port < 1024 || port > 65535) { throw std::invalid_argument("Invalid port"); } if (protocol != 'T' && protocol != 'U') { throw std::invalid_argument("Invalid protocol"); } this->ip_ver = ip_ver; this->protocol = protocol; this->port = port; if (ip_ver == 4) { this->address = "127.0.0.1"; } else if (ip_ver == 6) { this->address = "::1"; } create_socket(); } std::string recvAll() { std::string string = std::string(); char* buffer = (char *)malloc(100); while (recv(this->getSockFD(), buffer, 100, 0) != 0) { string.append(std::string(buffer)); } return string; } int getSockFD() { return sock_fd; } };