questo il prototipo di una funzione membro della classe Socket:

ssize_t Socket::recv(std::string & s);

la funzione ritorna la variabile bytes_recv dichiarata come ssize_t, enel corpo della funzione abbiamo:

bytes_recv = ::recv(sockfd, buffer, sizeof(buffer) - 1, 0);


Il dubbio sorge spontaneo: che tipo di dato è ssize_t?
E se non sbaglio, la funzione recv ritorna un int, per l'appunto il numero di byte ricevuti...


E inoltre, piccolo OT: "std::string & s" equivale a "std::string &s" (e dunque anche "char * buf" = "char *buf").