• <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

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲成色999久久网站| 国内精品久久久久久久亚洲 | 99热都是精品久久久久久| 亚洲愉拍99热成人精品热久久| 性做久久久久久久久| 国产日韩久久久精品影院首页| 亚洲国产精品久久久久网站| 99久久99久久精品国产片果冻| 嫩草影院久久国产精品| 久久国产免费观看精品| 国产成人久久精品二区三区| 伊人久久大香线蕉影院95| 国产亚洲精久久久久久无码AV| 国产成人无码精品久久久久免费 | 久久99精品国产麻豆不卡| 伊人久久大香线蕉精品| 久久91精品综合国产首页| 国产午夜精品久久久久九九电影 | 亚洲午夜精品久久久久久浪潮| 久久久久噜噜噜亚洲熟女综合| 美女久久久久久| 精品国产乱码久久久久软件| 久久精品国产亚洲av日韩| 91久久九九无码成人网站| 婷婷久久综合| 国产精品一久久香蕉国产线看| 国产成人久久777777| 亚洲日本va中文字幕久久| 欧美综合天天夜夜久久| 久久影视综合亚洲| 久久精品午夜一区二区福利| 久久久精品国产亚洲成人满18免费网站 | 99久久精品午夜一区二区| 99久久国产亚洲高清观看2024| 一级女性全黄久久生活片免费| 亚洲va久久久噜噜噜久久狠狠| 久久综合久久综合久久综合| 99精品久久久久久久婷婷| 国产—久久香蕉国产线看观看| 午夜人妻久久久久久久久| 免费一级做a爰片久久毛片潮|