• <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 閱讀(412) 評論(0)  編輯 收藏 引用 所屬分類: Linux_SysAdmin
            <2010年11月>
            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免费| 久久精品国产一区二区三区日韩| 一级做a爰片久久毛片人呢| 香港aa三级久久三级| 久久精品国产99国产精品| 久久无码高潮喷水| 日韩精品国产自在久久现线拍| 久久综合久久鬼色| 9久久9久久精品| 成人久久免费网站| 狠狠久久综合伊人不卡| 伊人久久大香线蕉亚洲五月天| 秋霞久久国产精品电影院| 久久久亚洲AV波多野结衣| 国产精品99久久久久久宅男 | 久久线看观看精品香蕉国产| 久久久久亚洲av成人无码电影 | 久久久久久久91精品免费观看 | 97久久精品人人澡人人爽| 亚洲午夜久久久久妓女影院| 久久天天躁狠狠躁夜夜2020| 国产精品久久久久影视不卡| 97精品依人久久久大香线蕉97| 久久久久久久国产免费看| 国产成人精品久久亚洲| 久久AV高清无码| 色婷婷综合久久久久中文一区二区 | 亚洲&#228;v永久无码精品天堂久久 | 超级碰碰碰碰97久久久久| 亚洲欧美日韩精品久久| 东京热TOKYO综合久久精品| 亚洲国产精品无码久久久不卡 | 模特私拍国产精品久久| 精品久久久无码中文字幕| 99久久综合狠狠综合久久| 国产精品美女久久久网AV| 色综合合久久天天综合绕视看| 久久99中文字幕久久| Xx性欧美肥妇精品久久久久久|