Board logo

标题: 基于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就进行刷新一次,将缓冲区的内容写入文件。
最后别忘记关闭文件和管道。用fcloseclose来实现。
到此为止,一个可以从server下载文件的client就完成了,其实实现过程很简单,有清晰的思路就行。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0