Non mi ero accorto di una cosa. Cioè prima di chiamare PrintError() chiamavo WSACleanup() e ovviamente l'operazione andava a buon fine e quindi mi restuiva 0. Ora il messaggio di errore corretto è: "recv failed(): parametro non corretto".

A cosa corrisponde?

Edit: Il codice d'errore è WSA_INVALID_PARAMETER.