gpt4 book ai didi

c++ - 如何使用 librsync 函数打开远程文件?

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:25 26 4
gpt4 key购买 nike

我正在使用 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: %d\n", res);

return 0;
}

当我通过网络运行带有文件参数的程序时,例如

./a.out cs1130218@palasi.cse.iitd.ernet.in:games.txt

fpa 为 NULL。

我猜 fopen 不是为通过网络打开文件而设计的。我需要一个可以做到这一点的命令。 c/c++ 中的任何命令。你可以清楚地看到我想用这个程序做什么。

最佳答案

“我需要一个可以通过网络打开文件的命令”是一个非常非常非常的高级操作,因此它掩盖了各种细节:什么样的网络协议(protocol)应该使用?身份验证应该如何处理?网络错误应该如何处理?打开文件后应该做什么:读取/写入/两者,顺序还是随机?

librsync 相对较低级别,甚至不会尝试自己回答这些问题。 Its README解释:

librsync does not implement the rsync wire protocol. If you want to talk to an rsync server to transfer files you'll need to shell out to rsync. librsync is for building other programs that transfer files as efficiently as rsync. You can use librsync to make backup tools, distribute binary patches to programs, or sync directories to a server or between peers.

要通过网络打开文件,您需要实现自己的服务器和线路协议(protocol),或者您需要使用诸如 rsync 之类的命令来为您处理这些细节(以及,如果您的大部分逻辑都在处理其他命令,那么 C++ 可能不是完成这项工作的最佳工具)。

关于c++ - 如何使用 librsync 函数打开远程文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com