当前位置:  编程技术>c/c++/嵌入式

c语言获取直播吧最近一周nba比赛信息

    来源: 互联网  发布时间:2014-10-25

    本文导语:  就是用c语言的写的一个简单http请求,并分析其响应,原理很简单,主要是分析http响应,麻烦的是提取其中的比赛信息 代码如下:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #...

就是用c语言的写的一个简单http请求,并分析其响应,原理很简单,主要是分析http响应,麻烦的是提取其中的比赛信息

代码如下:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include     //struct hostent结构的头文件
#include

#define USERAGENT "Wget/1.10.2"
#define ACCEPT "*/*"
#define ACCEPTLANGUAGE "zh-cn,zh;q=0.5"
#define ACCEPTENCODING "gzip,deflate"
#define ACCEPTCHARSET "gb2312,utf-8;q=0.7,*;q=0.7"
#define KEEPALIVE "300"
#define CONNECTION "keep-alive"
#define CONTENTTYPE "application/x-www-form-urlencoded"

#define HOSTNAME "www.zhibo8.cc"
#define DEBUG 1
char Request[409600]="";
char Recive[409600]="";
struct hostent *host;
int sockfd=0;
FILE *fp;
struct sockaddr_in server_addr;
int year;
int mon;
int day;
int wday;
int count=0;

void HandLine(char *l);
void SaveResult();
void GetDayInfo();
void GetTime();
int GetLocalAgent(char * UserAgent, char * Accept, char * AcceptLanguage, char * AcceptEncoding, char * AcceptCharset, char * KeepAlive, char * Connection, char * ContentType)
{
  memcpy(UserAgent, USERAGENT, strlen(USERAGENT));
  memcpy(Accept, ACCEPT, strlen(ACCEPT));
  memcpy(AcceptLanguage, ACCEPTLANGUAGE, strlen(ACCEPTLANGUAGE));
  memcpy(AcceptEncoding, ACCEPTENCODING, strlen(ACCEPTENCODING));
  memcpy(AcceptCharset, ACCEPTCHARSET, strlen(ACCEPTCHARSET));
  memcpy(KeepAlive, KEEPALIVE, strlen(KEEPALIVE));
  memcpy(Connection, CONNECTION, strlen(CONNECTION));
  memcpy(ContentType, CONTENTTYPE, strlen(CONTENTTYPE));
  return 0;
}


void CreatRequest()
{
    char UserAgent[1024] = "", Accept[1024] = "", AcceptLanguage[1024] = "", AcceptEncoding[1024] = "", AcceptCharset[1024] = "", KeepAlive[1024] = "", Connection[1024] = "", ContentType[1024] = "";
    if((host=gethostbyname("www.zhibo8.cc"))==NULL) /* get ip address by domain */
     {
           if(DEBUG)  fprintf(stderr,"tGethostname '%s' error, %sn", HOSTNAME, strerror(errno));
           exit(1);
     }
    GetLocalAgent(UserAgent, Accept, AcceptLanguage, AcceptEncoding, AcceptCharset, KeepAlive, Connection, ContentType); /* Get client browser information */
    sprintf(Request, "GET /%s/%s HTTP/1.0rnHost: %srnUser-Agent: %srnAccept: %srnConnection: %srnrn", "/", "", HOSTNAME, UserAgent, Accept, Connection);
}

代码如下:

void ConnectWeb()
{
    if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
       fprintf(stderr,"t SOCKET ERROR:%san",strerror(errno));
       exit(1);
    }
    memset(&server_addr,0,sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port   = htons(80);   
    server_addr.sin_addr = *((struct in_addr *)host->h_addr);
    if(connect(sockfd,(struct sockaddr*)(&server_addr),sizeof(struct sockaddr))==-1)
    {
       fprintf(stderr,"t CONNECT ERROR:%san",strerror(errno));
       exit(1);
    }
}

void SendRequest()
{
    int wn=0;
    wn=write(sockfd,Request,strlen(Request));
    if(wn==-1)
    {
     fprintf(stderr,"t SEND ERROR:%san",strerror(errno));
     exit(1);
    }
     fprintf(stdout, "ntRequest.  send OK!n" );
}
void SaveResult()
{
    fd_set readfds;
   struct timeval tival;

  
   int i,j,ret;
   i=j=ret=0;
  int n=0;
   RECIVE:
   FD_ZERO(&readfds);
   tival.tv_sec=10;
   tival.tv_usec=0;
   if(sockfd>0)
     FD_SET(sockfd,&readfds);
   ret=select(sockfd+1,&readfds,NULL,NULL,&tival);
   if(ret==0)
   {
     if(n++0)
     FD_SET(sockfd,&readfds);
   ret=select(sockfd+1,&readfds,NULL,NULL,&tival);
   if(ret==0)
   {
     if(n++=7)
    return;
    printf("n***********%d年 %d月 %d日, 星期 %d  **********************nn",year,mon,day+count-1,sday>7?sday%7:sday);
    while(read(sockfd,&t,1)) /*处理每天的比赛信息即

    里的内容*/
        {

     if(t=='l')
     {
       read(sockfd,&t,1);
              if(t=='i');
              {
                 int ln=0;
                 memset(Line,0,sizeof(Line));    
          while(read(sockfd,Line+(ln++),1))/*处理每行的信息
  • 里的内容*/
          {

                    char *s=strstr(Line,"");
                    if(s!=NULL)
                      break;
          }
          Line[ln]=0;                      
                 HandLine(Line);
       }  
     }
           else if(t=='/')
     {
              read(sockfd,&t,1);
       if(t=='u')
       {
          read(sockfd,&t,1);
                 if(t=='l');
                  return;     
       }
            }
        }
    }
    void HandLine(char *l)
    {
       l++;  
       char *NBA="NBA常规赛";
       char *p=strstr(l,NBA);
       if(p==NULL)
     return;
       char *t=strstr(l,"");
       char *p2=strstr(p,"tm_year+1900;
        mon =timeinfo->tm_mon+1;
        day =timeinfo->tm_mday;
        wday=timeinfo->tm_wday;
       if(wday==0)
         wday=7;
    }

    int main()
    {
        fp=fopen("Info.txt","w");
        if(fp==NULL)
        {
          fprintf(stderr,"creat file is error n");
          exit(1);
        }
        CreatRequest();
        ConnectWeb();
        SendRequest();   
        EchoResult();
        printf("IS END !!n");
        return 0;
    }

        
     
     

    您可能感兴趣的文章:

  • 如何获取客户端浏览器所使用的语言,特别是要区分简繁体!
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • c语言在unix系统下,如何获取cpu使用率
  • linux C语言 获取当前程序运行时路径
  • linux下如何用C语言获取不同网段上设备的MAC地址
  • 如何使用c语言获取当前系统的时间,就是那个秒数?
  • 多网卡环境用C语言怎么获取所有的IP列表
  • linux C语言 如何获取系统可用内存?
  • suse11如何获取本机系统的时间,语言,用户名,硬盘分区,挂载点等信息?
  • linux下怎样用C语言获取CPU和硬盘的ID
  • c语言获取文件大小的示例
  • SUSE10下,如何使用perl语言执行一条语句:从一台机器telnet到远端另一台机器,在远端机器上执行命令,并能获取到执行结果。请高手指点,Very 谢谢~
  • 用C语言获取文件的大小示例分享
  • 使用C语言中的time函数获取系统时间
  • C语言如何获取嵌入式linux网卡上的mac地址
  • c 语言怎样获取一个文件夹下的所有文件名和文件?
  • 求教:在Linux下的C语言中如何获取分区的剩余大小和文件的大小
  • linux系统中用C语言获取sd卡和u盘的容量
  • linux根据pid获取进程名和获取进程pid(c语言获取pid)
  • 请问在linux下用c语言编程,如何获取网络流量呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 动态编程语言 LIME编程语言
  • c语言实现MD5算法完整代码示例
  • C语言如何改变当前语言环境
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • c语言基于libpcap实现一个抓包程序过程
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • HTML超文本标记语言教程及实例
  • Redhat9安装时语言只选择了中文,现在还能再增加其它语言的支持吗?如英文
  • MD5算法的C语言实现
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3