使用Libssh将文件从服务器复制到客户端:分配文件复制目标路径的问题

时间:2018-09-15 08:17:20

标签: c++ visual-c++ sftp libssh

我想将文件从服务器复制到客户端,我已经连接了服务器,并且可以在服务器的特定文件中添加一些内容。我经历了this tutorialsthis,因此我根据教程编写了一些代码。但它不起作用。我知道获取目标路径时会出错。在调试时,我收到此错误未处理的异常:读取访问冲突。文件为nullptr ...,并且我发现'错误是在fd(sftp_file fd;)中,我在我想要的位置分配了路径(客户端)“ C:/ Users / Sami / Desktop /”从“ /home/server/Desktop/sa/wi.exe”此路径(服务器)复制wi.exe。'我该如何纠正呢?

access_type = O_RDONLY;
        file = sftp_open(sftp, "/home/server/Desktop/sa/wi.exe",access_type,0);
        fd = sftp_open(sftp,"C:/Users/Sami/Desktop/", O_CREAT, 0);
       nbytes = sftp_read(file, buffer, sizeof(buffer));
        nwritten = sftp_write(fd, buffer, nbytes);
    sftp_close(file);

1 个答案:

答案 0 :(得分:0)

对于远程计算机上的文件,您仅应使用sftp_open,sftp_read和sftp_write。对于本地计算机上的文件,只需使用常规文件功能和类(例如fopen或fstream)。

例如

access_type = O_RDONLY;
file = sftp_open(sftp, "/home/server/Desktop/sa/wi.exe",access_type,0);
FILE* fd = fopen("C:/Users/Sami/Desktop/wi.exe", "w");
nbytes = sftp_read(file, buffer, sizeof(buffer));
nwritten = fwrite(buffer, sizeof(char), nbytes, fd);
sftp_close(file);
fclose(fd);

您也错过了目标路径上的文件名,如πάνταῥεῖ评论。