首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM的嵌入式流媒体播放器的实现(2)

基于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就完成了,其实实现过程很简单,有清晰的思路就行。
继承事业,薪火相传
返回列表