• <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服務器信息,忽然想起自己好像也比較想知道,遂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

              那么工具是實現了,如何用c來實現呢... 其實也很簡單,我剛開始還走了點彎路想的是去查看wget or curl的源碼,奈何那種代碼相互之間依賴性太強實在不易閱讀,于是自己用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 閱讀(415) 評論(0)  編輯 收藏 引用 所屬分類: Linux_SysAdmin
            <2009年6月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

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

            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无码专区| 精品久久一区二区三区| 精品999久久久久久中文字幕| 久久不射电影网| 人人狠狠综合88综合久久| 日韩精品久久久久久久电影| 7777精品久久久大香线蕉| 四虎国产精品免费久久久| 伊人久久大香线蕉AV一区二区| 日韩精品久久久久久久电影蜜臀| 亚洲国产天堂久久综合网站| 天天影视色香欲综合久久| www.久久热.com| 亚洲精品国产字幕久久不卡| 久久香蕉国产线看观看乱码| 亚洲AV无一区二区三区久久 | 久久精品国产免费观看| 99久久国语露脸精品国产| 久久亚洲sm情趣捆绑调教| 国产精品九九久久免费视频 | 曰曰摸天天摸人人看久久久| 国产精品亚洲综合久久| 国产午夜电影久久| 久久A级毛片免费观看| 国内高清久久久久久| 色狠狠久久综合网| 奇米影视7777久久精品人人爽| 国产精品久久久99| 秋霞久久国产精品电影院| 国产午夜精品久久久久免费视| 99久久99久久精品国产片果冻| 无码人妻少妇久久中文字幕| 久久精品国产福利国产琪琪| 国产精品成人精品久久久| 伊人久久大香线焦综合四虎| 99久久精品日本一区二区免费| 久久国产免费观看精品3| 国产三级久久久精品麻豆三级| 午夜欧美精品久久久久久久| 日产精品99久久久久久|