#pragma once #include #include class TcpNet { public: TcpNet(); // starts listening on port int server(int port, const std::function(std::string)>& process_request) const; // writes request to server on address:port and returns response [[nodiscard]] std::string client(const std::string &address, int portno, const std::string &request) const; [[nodiscard]] std::vector client(const std::string &address, int portno, const std::vector &requests) const; private: static std::string read_from_socket(int sockfd) ; static void write_to_socket(int sockfd, const std::string &str) ; };