Libftpp
A modern C++ library
Server Class Reference

Basic TCP server class using POSIX sockets and select() for multi-client communication. More...

#include <server.hpp>

Public Member Functions

 Server ()
 
 ~Server ()
 
 Server (const std::string &address, size_t port)
 
void start (const size_t &port=0)
 
void defineAction (const Message::Type &messageType, const std::function< void(long long &clientID, const Message &msg)> &action)
 
void sendTo (const Message &message, long long clientID)
 
void sendToArray (const Message &message, std::vector< long long > clientIDs)
 
void sendToAll (const Message &message)
 
void update ()
 
void stop ()
 

Detailed Description

Basic TCP server class using POSIX sockets and select() for multi-client communication.

This class provides a robust TCP server implementation that can handle multiple simultaneous client connections using select() for non-blocking I/O operations. It supports message-based communication with callback functions for different message types.

Note
Handles connections, disconnections, sending and receiving messages automatically
Uses Message class for structured message format and parsing
Limited by maximum simultaneous connections (NB_CONNECTION = 1000)
Limited by maximum bytes that can be read at once (READ_BUFFER_SIZE = 100000)
// Create and start server
Server server("127.0.0.1", 8080);
server.start();
// Define message handler for specific message type
server.defineAction(1001, [](long long& clientID, const Message& msg) {
std::string request;
msg >> request;
std::cout << "Client " << clientID << " says: " << request << std::endl;
// Send response back to client
Message response(1002);
response << std::string("Hello Client " + std::to_string(clientID));
server.sendTo(response, clientID);
});
// Main server loop
while (running) {
server.update(); // Process incoming connections and messages
}
server.stop();
Class representing a structured message for network communication.
Definition: message.hpp:47
Basic TCP server class using POSIX sockets and select() for multi-client communication.
Definition: server.hpp:62
Exceptions
std::runtime_erroron network errors (bind, listen, accept failures)
See also
Message for message format and usage
Client for corresponding client implementation

Definition at line 61 of file server.hpp.

Constructor & Destructor Documentation

◆ Server() [1/2]

Server::Server ( )

Definition at line 3 of file server.cpp.

◆ ~Server()

Server::~Server ( )

Definition at line 5 of file server.cpp.

References stop().

◆ Server() [2/2]

Server::Server ( const std::string &  address,
size_t  port 
)

Definition at line 10 of file server.cpp.

Member Function Documentation

◆ defineAction()

void Server::defineAction ( const Message::Type messageType,
const std::function< void(long long &clientID, const Message &msg)> &  action 
)

Definition at line 163 of file server.cpp.

◆ sendTo()

void Server::sendTo ( const Message message,
long long  clientID 
)

Definition at line 125 of file server.cpp.

References Message::getSerializedData().

Referenced by sendToAll(), and sendToArray().

◆ sendToAll()

void Server::sendToAll ( const Message message)

Definition at line 154 of file server.cpp.

References sendTo().

◆ sendToArray()

void Server::sendToArray ( const Message message,
std::vector< long long >  clientIDs 
)

Definition at line 146 of file server.cpp.

References sendTo().

◆ start()

void Server::start ( const size_t &  port = 0)

Definition at line 12 of file server.cpp.

References NB_CONNECTION, and stop().

◆ stop()

void Server::stop ( )

Definition at line 259 of file server.cpp.

Referenced by start(), and ~Server().

◆ update()

void Server::update ( )

Definition at line 170 of file server.cpp.