我正在用 c 创建一个套接字程序。它将文件中的数据分成多个块并通过套接字发送。目的地的数据以乱序方式到达。我该如何管理。由于文件很大,我无法将所有数据保留在内存中。
问问题
1234 次
2 回答
3
在这种情况下,我不熟悉标准方法,但是订购了 afaik tcp。如果你被 udp 卡住了,你总是可以在每个块前面加上一个 1 字节(或更少)的块来指定排序,然后使用它在客户端对它们进行排序。
于 2013-10-03T02:44:06.170 回答
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;
}
大概您有某种方案,您可以通过该方案知道每个套接字上进入了哪些块(即偏移量)。使用它来计算文件中的正确偏移量并写入它们。
于 2013-10-03T03:15:45.280 回答