Comment copier un fichier en C/C++ avec libssh et sftp

Je poste ici car j'ai besoin d'aide avec un peu de code en relation avec libssh.

J'ai lu toute la documentation officielle ici encore, mais je ne comprends pas les choses que je dois faire si quelqu'un peut en lumière moi je serais heureux.

En fait, je veux copier un fichier à partir d'un client à un serveur distant, mais je ne comprends pas comment le faire avec la bibliothèque libssh et la fonction sftp dans libssh.

La situation est la suivante: La session ssh est ouvert et le sftp session est ouverte trop, je peux créer un fichier et écrire à partir du client vers le serveur avec la fonction intégrée de lib ssh.

Je n'ai pas trouver un moyen facile de copier un fichier du client vers le serveur avec une fonction simple comme sftp_transfer(sourceFile(comme c:\my document\bonjour world.txt),fichier distant, remotefile(/home/utilisateur/bonjour world.txt),droit(lecture et écriture)) ?

Avec ce que j'ai compris, à partir du tutoriel, c'est d'abord la création d'un fichier dans l'emplacement distant (serveur) puis c'est l'ouverture de ce fichier avec cette ligne de code :

file = sftp_open(sftp, "/home/helloworld.txt",access_type,1);

Après que le fichier est créé sur le serveur , et ensuite il est écrit dans ce fichier créé avec un tampon:

const char *helloworld = "Hello, World!\n";
int length = strlen(helloworld);
nwritten = sftp_write(file, helloworld, length);

Ma question est de savoir maintenant si j'ai un fichier par exemple une .fichier doc et je veux transférer/télécharger ce fichier à partir de c:\mydocument\document.doc à distance le serveur distant /home/user/document.doc comment puis-je faire avec cette méthode ?

Comment puis-je mettre ce fichier dans le sftp_write() fonction de l'envoyer comme la helloworld dans l'exemple de la fonction ?

J'ai peut-être pas assez bon dans la programmation à comprendre, mais j'ai vraiment essayé de comprendre et je suis coincé avec elle.

Merci d'avance pour votre aide

Voir ci-dessous un exemple de code que j'ai utilisé pour le test:

//Set variable for the communication
      char buffer[256];
      unsigned int nbytes;

        //create a file to send by SFTP
        int access_type = O_WRONLY | O_CREAT | O_TRUNC;
        const char *helloworld = "Hello, World!\n";
        int length = strlen(helloworld);

        //Open a SFTP session
        sftp = sftp_new(my_ssh_session);
        if (sftp == NULL)
        {
            fprintf(stderr, "Error allocating SFTP session: %s\n",
            ssh_get_error(my_ssh_session));
            return SSH_ERROR;
        }
        //Initialize the SFTP session
        rc = sftp_init(sftp);
        if (rc != SSH_OK)
        {
            fprintf(stderr, "Error initializing SFTP session: %s.\n",
            sftp_get_error(sftp));
            sftp_free(sftp);
            return rc;
         }

        //Open the file into the remote side
        file = sftp_open(sftp, "/home/helloworld.txt",access_type,1);
        if (file == NULL)
        {
            fprintf(stderr, "Can't open file for writing: %s\n",ssh_get_error(my_ssh_session));
            return SSH_ERROR;
        }

        //Write the file created with what's into the buffer
        nwritten = sftp_write(file, helloworld, length);
        if (nwritten != length)
        {
            fprintf(stderr, "Can't write data to file: %s\n",
            ssh_get_error(my_ssh_session));
            sftp_close(file);
            return SSH_ERROR;
        }

`