HTTPS est comme HTTP, mais il est encapsulé dans une couche SSL cryptographique. Vous devrez utiliser une bibliothèque comme OpenSSL pour établir ces connexions HTTPS.
OpenSSL fournira des fonctions qui remplacent celles de socket.h, pour se connecter, lire et écrire du HTTP normal (ou tout autre protocole que vous souhaitez utiliser) via un canal SSL, rendant la gestion de la partie SSL transparente pour vous.
https
les requêtes ressemblent à http
requêtes, mais avec un cryptage transparent de la communication réelle entre le client et le serveur, et sur un port par défaut différent. La bonne nouvelle est que le cryptage transparent vous permet de programmer comme si vous écriviez un client HTTP normal. La mauvaise nouvelle est que le chiffrement est suffisamment complexe pour que vous ayez besoin d'une bibliothèque spécialisée pour l'implémenter pour vous.
Une de ces bibliothèques est OpenSSL. Avec OpenSSL, le code minimal pour un client ressemblerait à ceci :
#include <openssl/ssl.h>
// first connect to the remote as usual, but use the port 443 instead of 80
// initialize OpenSSL - do this once and stash ssl_ctx in a global var
SSL_load_error_strings ();
SSL_library_init ();
SSL_CTX *ssl_ctx = SSL_CTX_new (SSLv23_client_method ());
// create an SSL connection and attach it to the socket
SSL *conn = SSL_new(ssl_ctx);
SSL_set_fd(conn, sock);
// perform the SSL/TLS handshake with the server - when on the
// server side, this would use SSL_accept()
int err = SSL_connect(conn);
if (err != 1)
abort(); // handle error
// now proceed with HTTP traffic, using SSL_read instead of recv() and
// SSL_write instead of send(), and SSL_shutdown/SSL_free before close()