• <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无码蜜桃| 日韩人妻无码一区二区三区久久| 99久久精品日本一区二区免费| 99久久久国产精品免费无卡顿| 97久久精品人人澡人人爽| 久久精品国产清自在天天线| 久久频这里精品99香蕉久| 天天躁日日躁狠狠久久 | 亚洲一区精品伊人久久伊人| 无码精品久久久久久人妻中字| 精品无码久久久久久国产| 性高湖久久久久久久久| 狠狠色综合久久久久尤物| 国产毛片欧美毛片久久久| 久久成人国产精品一区二区| 99久久国产综合精品女同图片| 国内精品伊人久久久久影院对白 | 国产欧美一区二区久久| 性做久久久久久久久老女人| 国产精品久久一区二区三区| 狠狠色婷婷久久综合频道日韩 | 久久精品中文騷妇女内射| 99久久精品午夜一区二区| 777米奇久久最新地址| 婷婷久久综合九色综合绿巨人| 9999国产精品欧美久久久久久| 偷窥少妇久久久久久久久| 美女久久久久久| 久久精品无码av| 久久国产高清一区二区三区| 色综合久久88色综合天天| 99久久综合狠狠综合久久止| 色偷偷88888欧美精品久久久| 久久久无码精品亚洲日韩京东传媒 | 精品多毛少妇人妻AV免费久久| 久久久久18| 久久综合成人网| 亚洲国产精品无码久久九九 | 午夜精品久久久久久中宇| av色综合久久天堂av色综合在| 久久精品国产久精国产果冻传媒|