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

Copying a file from a server to client using Libssh: issues with assigning file copy destination path

本文关键字:复制 文件 目标路径 分配 问题 Libssh 服务器 使用 客户端      更新时间:2023-10-16

我想将文件从服务器复制到客户端,我已经连接了服务器,我可以在服务器的特定文件中添加一些内容。我已经完成了这个教程,因此我根据教程编写了一些代码。但它不起作用。我知道在获取目标路径时出现一些错误。在调试时,我收到此错误引发未处理的异常:读取访问冲突。 文件为空...我发现">错误在 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);

您应该只对远程计算机上的文件使用 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);

此外,您错过了目标路径上的文件名,正如πάντα ῥεῖ所评论的那样。