• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 297,  comments - 15,  trackbacks - 0
            來源于CU的一個帖子,問如何查看web服務(wù)器信息,忽然想起自己好像也比較想知道,遂google之

              [root@dbrg-2 ~]# curl -I www.baidu.com

              HTTP/1.1 200 OK

              Date: Wed, 29 Jul 2009 02:51:19 GMT

              Server: BWS/1.0

              Content-Length: 3509

              Content-Type: text/html

              Cache-Control: private

              Expires: Wed, 29 Jul 2009 02:51:19 GMT

              Set-Cookie: BAIDUID=0D5F54C0853B7C38D6BD3A3E5EA63C44:FG=1; expires=Wed, 29-Jul-39 02:51:19 GMT; path=/; domain=.baidu.com

              P3P: CP=" OTI DSP COR IVA OUR IND COM "

              [root@dbrg-2 ~]# wget -S --spider www.baidu.com

              --10:51:34-- http://www.baidu.com/

              => `index.html

              那么工具是實(shí)現(xiàn)了,如何用c來實(shí)現(xiàn)呢... 其實(shí)也很簡單,我剛開始還走了點(diǎn)彎路想的是去查看wget or curl的源碼,奈何那種代碼相互之間依賴性太強(qiáng)實(shí)在不易閱讀,于是自己用wireshark抓包, so easy!!!!有興趣的自己去抓下

              #include <stdio.h>

              #include <stdlib.h>

              #include <unistd.h>

              #include <string.h>

              #include <sys/socket.h>

              #include <netinet/in.h>

              #include <netdb.h>

              #define HTTPPORT 80

              char* head =

              "HEAD / HTTP/1.0\r\n"

              "Accept: */*\r\n"

              "User-Agent: Wget/1.10.2 (Red Hat modified)\r\n"

              "Host:127.0.0.1\r\n"

              "Connection: Keep-Alive\r\n\r\n";

              int connect_URL(char *domain,int port)

              {

              int sock;

              struct hostent * host;

              struct sockaddr_in server;

              host = gethostbyname(domain);

              if (host == NULL)

              {

              printf("gethostbyname error\n");

              return -2;

              }

            sock = socket(AF_INET,SOCK_STREAM,0);

              if (sock < 0)

              {

              printf("invalid socket\n");

              return -1;

              }

              memset(&server,0,sizeof(struct sockaddr_in));

              memcpy(&server.sin_addr,host->h_addr_list[0],host->h_length);

              server.sin_family = AF_INET;

              server.sin_port = htons(port);

              return (connect(sock,(struct sockaddr *)&server,sizeof(struct sockaddr)) <0) ? -1 : sock;

              }

              int main()

              {

              int sock;

              int ret;

              char buf[100];

              char *domain = "127.0.0.1";

              FILE* fp = fopen("test","w+");

              if(NULL == fp){

              printf("can't open stockcode file!\n");

              return -1;

              }

              sock = connect_URL(domain,HTTPPORT);

              if (sock <0){

              printf("connetc err\n");

              return -1;

              }

              send(sock,head,strlen(head),0);

              while(1)

              {

              if((ret=recv(sock,buf,100-1,0))<1)

              break;

              buf[ret]='\0';

              printf("%s", buf);

              fprintf(fp,"%s",buf); //save http data

              }

              fclose(fp);

              close(sock);

              //printf("bye!\n");

              return 0;

              }


            from:

            http://linux.chinaitlab.com/server/800420_2.html


            posted on 2010-01-21 15:59 chatler 閱讀(422) 評論(0)  編輯 收藏 引用 所屬分類: Linux_SysAdmin
            <2010年1月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺這個博客還是不錯,雖然做的東西和我不大相關(guān),覺得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            人妻丰满AV无码久久不卡 | 久久久久国产视频电影| 国产精品va久久久久久久| 一本久道久久综合狠狠躁AV| 久久亚洲精品无码AV红樱桃| 久久99热这里只有精品国产| 色欲av伊人久久大香线蕉影院| 99久久精品国产一区二区| 蜜臀av性久久久久蜜臀aⅴ| 国产午夜福利精品久久| 久久亚洲AV成人无码电影| 欧美激情精品久久久久久| 亚洲嫩草影院久久精品| 精品久久久噜噜噜久久久| 久久久久久久波多野结衣高潮| 久久精品成人欧美大片| 久久91综合国产91久久精品 | 97精品国产91久久久久久| 亚洲精品成人网久久久久久| 婷婷综合久久狠狠色99h| 精品久久久久久久无码| 久久无码专区国产精品发布| 久久丝袜精品中文字幕| 国产毛片久久久久久国产毛片| 国产精品久久久久久福利69堂| 久久久久亚洲AV成人片| 久久国产色AV免费观看| 久久人人爽爽爽人久久久| 亚洲女久久久噜噜噜熟女| 97精品依人久久久大香线蕉97| 2021最新久久久视精品爱| 人妻无码αv中文字幕久久琪琪布| 无码国内精品久久人妻麻豆按摩| 人妻精品久久久久中文字幕| 亚洲国产香蕉人人爽成AV片久久| 色婷婷狠狠久久综合五月| 一日本道伊人久久综合影| 国内精品久久久久久久久电影网| 狠狠综合久久综合88亚洲| 久久久www免费人成精品| 亚洲国产精品无码久久久秋霞2 |