Como copiar um arquivo em C / C ++ com libssh e sftp

Estou postando aqui porque preciso de ajuda com algum código relacionadolibssh.

Eu li toda a documentação oficialAqui mas ainda não entendo as coisas que preciso fazer se alguém puder me iluminar ficaria satisfeito.

Na verdade, eu quero copiar um arquivo de um cliente para um servidor remoto, mas não entendo como fazê-lo com a biblioteca libssh e a função sftp no libssh.

A situação é a seguinte: A sessão ssh está aberta e a sessão sftp está aberta também, posso criar um arquivo e gravá-lo do cliente para o servidor com a função integrada do lib ssh.

Eu não encontrei uma maneira fácil de copiar um arquivo do cliente para o servidor com uma função simples comosftp_transfer (sourceFile (como c: \ meu documento \ hello world.txt), RemoteFile (/ home / user / hello world.txt), direito (leitura e escrita)) ?

Com o que eu entendi do tutorial é primeiro criar um arquivo na localização remota (servidor), então ele está abrindo este arquivo com esta linha de código:

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

Depois disso, o arquivo é criado no servidor e, em seguida, ele é gravado nesse arquivo criado com um buffer:

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

Minha pergunta é agora se eu tenho um arquivo, por exemplo, um arquivo .doc e eu quero transferir / carregar esse arquivo de c: \ mydocument \ document.doc para remoto do servidor remoto /home/user/document.doc como posso fazer com este método?

Como posso colocar esse arquivo nosftp_write () função para enviá-lo como o helloworld na função de amostra?

Eu posso não ser bom o suficiente em programação para entender, mas eu realmente tentei entender e estou preso a isso.

Agradeço antecipadamente por sua ajuda

Veja abaixo uma amostra do código que usei para testar:

// 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;
        }

` 

questionAnswers(3)

yourAnswerToTheQuestion