我正在尝试实现一个分布式 p2p 文件共享系统,其中一个对等方可以从其他对等方发送和下载文件。但是,我在下载文件并将其保存到目录时遇到了一些问题。
这是我发送请求文件的地方
while(!feof(requestedfile)) {
bytes_read = fread(buf, 1, sizeof(buf), requestedfile);
send(clientSock, buf, bytes_read, 0);
}
当我尝试下载时,我执行以下操作
while(recv(clientSock, currentLinePointer, 1, 0) != 0) {
currentLinePointer++;
}
我是 C 新手,但我知道我有 2 个问题
- 如何执行更有效的读取?如果我一次读取 1024 个字节,在最后一个数据块处,可能只有 1024 个字节的一半被填充。其他 512 个无意义字节会导致我的文件出错吗?(我知道当您尝试读取并保存末尾带有无意义字节的 jpg 时,图片会发生不好的事情)
- 现在我已经阅读了文件,如何保存该文件?说一个对等请求“hello.jpg”。我的设置可以发送和读取该文件,但现在如何将该文件保存到请求的对等目录“PATH/Pictures/”