我在c中创建一个套接字程序。它将文件中的数据分成多个块并通过套接字发送。目的地的数据以无序方式到达。我该如何管理呢。由于文件很大,我无法将所有数据保存在内存中直到最后。
答案 0 :(得分:3)
在这种情况下我不熟悉标准方法,但是订购了afaik tcp。如果你坚持使用udp,你总是可以在每个块前面添加一个1字节(或更少)的块来指定顺序,然后使用它在客户端对它们进行排序。
答案 1 :(得分:0)
提前创建一个稀疏文件并随时填写。你没有指定什么操作系统,但这里是一个如何在linux中执行它的示例程序。
#define _BSD_SOURCE
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
int fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (fd < 0)
{
perror("open");
return(1);
}
int offset = lseek(fd, 200000, SEEK_CUR);
ftruncate(fd, offset);
close(fd);
return 0;
}
据推测,您有某种方案可以通过它知道每个插槽上有哪些块(即偏移量)。用它来计算文件中的正确偏移并写入它们。