如何使用librsync函数打开远程文件
How to use librsync functions to open remote files?
我使用librsync库来维护文件版本。我无法从网络打开文件。
示例(创建签名文件):
int main(int argc, char** argv)//FILE *original, FILE *signature)
{
if(argc != 2)
{
cout<<"Enter the original file name."<<endl;
exit(1);
}
FILE *fpa;
fpa = fopen(argv[1],"r");
if(fpa==NULL)
{
cout<<"ERROR"<<endl;
exit(1);
}
FILE *fps;
fps = fopen("sig.sig","w+");
rs_result res = rs_sig_file(fpa, fps, 1,2,NULL);
fclose(fpa);
fclose(fps);
printf("Result code: %dn", res);
return 0;
}
当我在网络上运行带有文件参数的程序时,例如
./a.out cs1130218@palasi.cse.iitd.ernet.in:games.txt
fpa为NULL。
我想fopen不是为在网络上打开文件而设计的。我需要一个能做到这一点的命令。c/c++中的任何命令。你可以清楚地看到我想用这个节目做什么。
"我需要一个可以在网络上打开文件的命令"是一个非常高级的操作,因此,它掩盖了各种细节:应该使用什么样的网络协议?应该如何处理身份验证?应该如何处理网络错误?打开文件后应该做什么:读/写/两者兼有,顺序还是随机?
librsync的水平相对较低,甚至没有试图自己回答这些问题。其自述解释:
librsync不实现rsync-wire协议。如果您想与rsync服务器通信以传输文件,则需要向rsync发送shell。librsync用于构建与rsync一样高效地传输文件的其他程序。您可以使用librsync制作备份工具,将二进制修补程序分发到程序,或将目录同步到服务器或对等机之间。
要在网络上打开文件,您需要实现自己的服务器和有线协议,或者您需要使用rsync
之类的命令来处理这些细节(而且,如果您的大部分逻辑都在使用其他命令,C++可能不是最好的工具)。
librsync
和fopen
都不处理远程文件。
考虑使用GVFS或KIO这样的虚拟文件系统库:它们可以通过SFTP打开文件,然后您可以将它们传递给librsync。
相关文章:
- 从对象文件(.o)在macos上制作归档文件(.a文件)
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 在C++中写入来自不同线程的文件
- 有没有办法读取C++中的文件文件夹?
- c++多线程读取文件
- 错误C1083:无法打开包含文件.文件正确包含在代码中
- NDK 无法看到头文件 .h 文件
- 使用C 中的Windows API使用多线程列出文件
- 文件文件夹关联或归属
- 从导致AccessViolationException的线程访问文件缓冲区
- 如何以阻止的方式删除文件/文件夹
- 在MFC中序列化为Unicode文本文件-文件头错误
- (Qt C++)如何从QTableView将所选文件/文件夹打印到文本文件中
- 获取带有POCO的服务可执行文件文件夹
- 如何从文件文件夹创建自定义文件类型
- 如何在windows7有限内存的电脑上读取大文件?文件大小为25GB,但RAM容量只有16GB
- c++以二进制方式读取文件.文件结束的问题
- 使用Boost 1.55线程和文件系统并发内存损坏(Visual Studio 2013)
- 多线程写入文件c++
- 从多个线程调用C文件中的函数