Files
ft_irc/Server/Server.cpp

68 lines
2.0 KiB
C++

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* Server.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: iherman- <iherman-@student.42malaga.com +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2026/05/06 17:19:12 by iherman- #+# #+# */
/* Updated: 2026/05/07 13:00:56 by iherman- ### ########.fr */
/* */
/* ************************************************************************** */
#include "Server.hpp"
const int Server::kConnectionQueueLimit = 10;
Server::Server() :
port_(PORT_DEFAULT),
password_("")
{
// std::cout << "Hello from server" << std::endl;
}
Server::Server(int port, const std::string& password) :
port_(port),
password_(password)
{
if (port_ < 1 || port_ > 65535)
throw std::runtime_error("Invalid port");
if (password_.empty())
throw std::runtime_error("Empty password");
serverSocket_ = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket_ < 0)
throw std::runtime_error("Failed to create socket");
struct sockaddr_in addr;
std::memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port_);
addr.sin_addr.s_addr = INADDR_ANY;
bind(serverSocket_, (struct sockaddr*)&addr, sizeof(addr));
std::cout << "Server port: " << port_
<< "\nServer Password: " << password_
<< std::endl;
}
Server::~Server()
{
close(serverSocket_);
}
Server &Server::operator=(const Server& other)
{
if (this != &other)
{
port_ = other.port_;
serverSocket_ = other.serverSocket_;
password_ = other.password_;
}
return *this;
}