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.