Moved header files to source directory; converted easysock to CPP

This commit is contained in:
2024-01-29 22:46:55 -05:00
parent 1daf8f41ae
commit c87c3ce3a2
6 changed files with 307 additions and 0 deletions

62
includes/server.hpp Normal file
View File

@@ -0,0 +1,62 @@
#include "easysock.hpp"
#include <iostream>
/*
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;
}
};