标题:
基于ARM的嵌入式流媒体播放器的实现(2)
[打印本页]
作者:
yuyang911220
时间:
2014-12-22 20:34
标题:
基于ARM的嵌入式流媒体播放器的实现(2)
这里使用
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
就完成了,其实实现过程很简单,有清晰的思路就行。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0