- UID
- 1029342
- 性别
- 男
|
这里使用write函数来向管道里写入要发送的HTTP请求,用一个循环来将request里的内容发送完。下一步如果server响应的话,那么就会通过管道发送文件数据流。这时,就需要创建一个文件来接受来自server的数据,使用如下代码:
fp =fopen(local_file, "a");
if(!fp) {
printf("create file error! %s\n", strerror(errno));
return 0;
}
很简单,使用fopen来创建文件,后面的标识参数可通过查阅附录知道。
while((nbytes=read(sockfd,buffer,1))==1)
{
if(i < 4) {
if(buffer[0] == '\r' || buffer[0] == '\n') i++;
else i = 0;
printf("%c", buffer[0]);
}
else {
fwrite(buffer, 1, 1, fp);
i++;
if(i24 == 0) fflush(fp);
}
}
以上代码就是server响应,然后还是通过管道来传送数据,这里使用read函数来读server发过来的数据,存入buffer中,然后再把buffer中的数据写入文件中,使用fwrite函数。这里有一点需要提醒下,buffer是不能同时被两个以上的函数操作的,这样会造成操作失败。这就是为什么得使用fflush函数来清空缓冲区的原因。当buffer一直写满到1024以后,fflush就进行刷新一次,将缓冲区的内容写入文件。
最后别忘记关闭文件和管道。用fclose和close来实现。
到此为止,一个可以从server下载文件的client就完成了,其实实现过程很简单,有清晰的思路就行。 |
|