C套接字:将缓冲区重定向到另一个文件

时间:2011-04-02 05:44:53

标签: c linux sockets buffer

如果以前用不同的措辞提出过这个问题,我会道歉。

继承我的问题。我有一个Linux TCP服务器客户端关系,在我的代码的某个部分,服务器将写()块文件缓冲区(比如说512字节)给客户端。我希望客户端通过某种方式将缓冲区块向外重定向到已经建立的文件(模仿复制效果)来重建另一侧的文件。我正在考虑一个中间人,他将缓冲区翻译成字符,然后使用fprintf等将信息推送到文件中(这是我能想到的唯一方法)。但是,这个想法在处理二进制文件时不起作用,因为ascii会弄乱二进制文件。

有没有办法将文件缓冲区指针重定向到另一个文件?谢谢!

1 个答案:

答案 0 :(得分:4)

使用recv从套接字读取缓冲区,并使用fwrite将其写入文件。当您打开本地文件时,请务必使用"wb"作为模式。

编辑:这是一般概念的草图:

socket input = open_socket(server, server_port);   
FILE *file = fopen("localfile.bin", "wb");
char buffer[some_size];

do { 
    size_t received = recv(input, some_size);
    fwrite(buffer, received, 1, file);
} while (received != 0);