我对如何将文件从http服务器发送到客户端(Web浏览器)感到有些困惑 .
首先我发送 Headers ,我的下一个任务是发送文件内容 . 但是,当我遇到一些问题时,我想一次性发送512字节的段而不是整个文件 .
我对如何实现这一点感到有点迷茫 . 这就是我想要的
read file1;
while (seg=get_next_segment(file1)){
do
send(seg)
until (seg_is_sent)
}
但是,我似乎无法找到适当的功能来实现这一目标 . fread
和 fseek
穿过我的脑海,但是第一个一次读取整个文件并且用fseek我没有看到从文件中抓取一部分的方法(而不是从文件指针读取直到文件结尾) .
3 回答
fread
没有读完整个文件 . 它准确读取你告诉它读多少 .这两个函数都有一个大小和
nitems
. 您可以将大小设置为512,将项目数设置为1(反之亦然),并只读取文件的该部分 .从手册页:
如您所见,您不必使用
fread
读取整个文件,您可以用nmemb大小的块读取它 .如果您在C中编写自己的Web服务器,您可能需要查看libmicrohttpd,它是C中用于嵌入其他应用程序的Web服务器,它可以为您处理流式传输文件 .
我感觉很亲切...这样的事情怎么样: