• <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年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(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

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            精品乱码久久久久久久| 国产精品久久久久久| 久久综合视频网站| 伊人久久大香线蕉精品不卡| 久久热这里只有精品在线观看| 色综合久久综合中文综合网| 99精品久久久久久久婷婷| 亚洲国产精品无码久久青草| 狠狠88综合久久久久综合网| 国产免费久久精品99久久| 久久夜色精品国产亚洲| 91超碰碰碰碰久久久久久综合| 久久综合九色综合网站| 99国内精品久久久久久久| 亚洲国产精品久久电影欧美| 久久精品国产精品亚洲艾草网美妙 | 91精品日韩人妻无码久久不卡| 婷婷久久综合九色综合九七| 狠狠88综合久久久久综合网| 久久这里有精品| 久久高潮一级毛片免费| 97久久精品无码一区二区天美| 日日狠狠久久偷偷色综合96蜜桃 | 性高朝久久久久久久久久| 久久国产精品成人片免费| 女人高潮久久久叫人喷水| 91久久精品国产91性色也| 国产精品久久久久久吹潮| 国产成人精品久久| 欧美日韩久久中文字幕| 四虎国产精品成人免费久久| 99热热久久这里只有精品68| 嫩草影院久久99| 国产福利电影一区二区三区,免费久久久久久久精 | 国内精品免费久久影院| 99久久婷婷国产综合精品草原 | 性高湖久久久久久久久AAAAA| 九九久久精品国产| 久久久免费观成人影院 | 美女写真久久影院| 国产日韩久久久精品影院首页|