Questa è una vecchia versione del documento!
Indice
Alcuni veloci appunti su C++
Autore: Fabio Di Matteo
Ultima revisione: 10/09/2026 13:45
Ho fatto alcune pagine simili su Rust e Go, quindi perchè non farle anche su C++. Si preferirà uno standard moderno.
Buone pratiche
Dato che il C/C++ offrono massima libertà nella gestine della memoria, possono (e non devono) essere pericolosi . Dunque ho raccolto alcune buone pratiche da tenere a mente qui: Buone pratiche di programmazione in C/C++
Thread
Lanciare un thread e proseguire col thread principale.
std::thread mio_thread([] { std::cout << "Eseguito in un thread separato\n"; });
Determinare se una porta tcp è aperta o no
La funzione ritorna true se è aperta false altrimenti.
#include <arpa/inet.h> #include <sys/socket.h> #include <unistd.h> #include <cstdlib> #include <chrono> #include <thread> bool is_port_ready(const char* host, int port) { int socket_fd = socket(AF_INET, SOCK_STREAM, 0); if (socket_fd < 0) return false; sockaddr_in address{}; address.sin_family = AF_INET; address.sin_port = htons(port); if (inet_pton(AF_INET, host, &address.sin_addr) != 1) { close(socket_fd); return false; } bool is_ready = connect( socket_fd, reinterpret_cast<sockaddr*>(&address), sizeof(address) ) == 0; close(socket_fd); return is_ready; }
Si potrebbe usare così:
...
std::thread server([&] {
mioservertcp.run(); //server di esempio
});
// Attende che abbia aperto la porta
while (!is_port_ready("127.0.0.1", 8080)) {
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
// A questo punto il server è raggiungibile
std::system("xdg-open http://127.0.0.1:8080/fmt");
server.join();
Il mio server tcp viene eseguito su un thread esterno e il main attende 10 millisecondi finchè la porta non sia disponibile. Quando è disponibile in questo caso lancia un browser su quell'indirizzo. Infine aspettiamo che il thread termini.
