青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0

程序是從http://zhoulifa.bokee.com/4640913.html 下的,做了些裁剪,使程序更加的清晰
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <netinet/in.h>
#include <limits.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <ctype.h>

int main(int argc, char *argv[])
{
int sockfd;
char buffer[1024];
struct sockaddr_in server_addr;
struct hostent *host;
int portnumber,nbytes;
char host_addr[256];
char host_file[1024];
char local_file[256];
FILE * fp;
char request[1024];
int send, totalsend;
int i;
char * pt;

if(argc!=2)
{
    fprintf(stderr,"Usage:%s web-address\a\n",argv[0]);
    exit(1);
}
portnumber=80;
strcpy(host_addr,argv[1]);
if((host=gethostbyname(argv[1]))==NULL)/*取得主機IP地址*/
{
    fprintf(stderr,"Gethostname error, %s\n", strerror(errno));
    exit(1);
}
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)/*建立SOCKET連接*/
{
    fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));
    exit(1);
}
/* 客戶程序填充服務端的資料 */
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portnumber);
server_addr.sin_addr=*((struct in_addr *)host->h_addr);

/* 客戶程序發起連接請求 */
if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)/*連接網站*/
{
    fprintf(stderr,"Connect Error:%s\a\n",strerror(errno));
    exit(1);
}

sprintf(request, "GET /%s HTTP/1.1\r\nAccept: */*\r\nAccept-Language: zh-cn\r\n\
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\n\
Host: %s:%d\r\nConnection: Close\r\n\r\n", host_file, host_addr, portnumber);
printf("%s", request);/*準備request,將要發送給主機*/

/*取得真實的文件名*/
strcpy(local_file, "index.html");
/*發送http請求request*/
send = 0;totalsend = 0;
nbytes=strlen(request);
while(totalsend < nbytes) {
    send = write(sockfd, request + totalsend, nbytes - totalsend);
    if(send==-1) {printf("send error!%s\n", strerror(errno));exit(0);}
    totalsend+=send;
    printf("%d bytes send OK!\n", totalsend);
}

fp = fopen(local_file, "a");
if(!fp) {
    printf("create file error! %s\n", strerror(errno));
    return 0;
}
printf("\nThe following is the response header:\n");
i=0;
/* 連接成功了,接收http響應,response */
while((nbytes=read(sockfd,buffer,1))==1)
{
    if(i < 4) {
      if(buffer[0] == '\r' || buffer[0] == '\n') i++;
      else i = 0;
      printf("%c", buffer[0]);/*把http頭信息打印在屏幕上*/
    }
    else {
      fwrite(buffer, 1, 1, fp);/*將http主體信息寫入文件*/
      i++;
      if(i%1024 == 0) fflush(fp);/*每1K時存盤一次*/
    }
}
fclose(fp);
/* 結束通訊 */
close(sockfd);
exit(0);
}


1    struct hostent *gethostbyname(const char *name);

     這個函數完成進行域名和IP地址的轉換,返回的為:

      struct hostent {
      char *h_name;                      /* 主機的官方域名 */
      char **h_aliases;                  /* 一個以NULL結尾的主機別名數組 */
      int h_addrtype;                     /* 返回的地址類型,在Internet環境下為AF-INET */
     int h_length;                         /*地址的字節長度 */
     char **h_addr_list;                /* 一個以0結尾的數組,包含該主機的所有地址*/ 
      }; 
     #define h_addr h_addr_list[0]           /*在h-addr-list中的第一個地址*/

    我們一般用的也就第一個地址

2   接下去就是SOCKET 的建立,綁定,連接,我們想要連接,上面得到的ip地址是不行的,我們要使用服務器的地址,具體數據結構如下:

   struct sockaddr_in {
      short int sin_family;                                           /* 地址族 */
      unsigned short int sin_port;                              /* 端口號 */
      struct in_addr sin_addr;                                   /* IP地址 */ 上面得到的地址
      unsigned char sin_zero[8];                              /* 填充0 以保持與struct sockaddr同樣大小 */
      };

   這里也提下 struct sockaddr 這個是描述sock 地址信息的,和上面的結構大小一樣,可以相互轉換

   struct sockaddr {
       unsigned short sa_family; /* 地址族, AF_xxx */
        char sa_data[14]; /* 14 字節的協議地址 */
       }

3 我們和服務器連上之后,就可以向服務器發送請求了

     write(sockfd, char *, size);      內容就是:GET /%s HTTP/1.1\r\nAccept: */*\r\nAccept-Language: zh-cn\r\n\User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\n\
Host: %s:%d\r\nConnection: Close\r\n\r\n

   具體是由其協議定的,我也還不是很清楚

4 服務器響應,就會發來信息頭+ 實際頁面的信息, 這個中間是有4個("\r"或"\n")進行分開的。

轉自:
http://blog.chinaunix.net/u2/76292/showart_1335922.html

posted on 2009-12-07 23:12 chatler 閱讀(567) 評論(0)  編輯 收藏 引用 所屬分類: Socket
<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

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

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜精品福利视频| 国产欧美日韩精品专区| 日韩午夜免费视频| 亚洲精品日韩在线| 一区二区三区免费网站| 99re热这里只有精品免费视频| 日韩亚洲精品视频| 亚洲网站啪啪| 久久精品99无色码中文字幕| 久久香蕉精品| 欧美日韩卡一卡二| 国产一区自拍视频| 亚洲欧洲综合| 亚洲欧美日韩人成在线播放| 欧美在线视频不卡| 欧美寡妇偷汉性猛交| 亚洲精品资源| 欧美一区二区视频观看视频| 老司机凹凸av亚洲导航| 欧美日韩在线视频首页| 国模吧视频一区| 99在线精品免费视频九九视| 午夜亚洲伦理| 亚洲国产一区在线| 亚洲男人的天堂在线| 欧美1区2区3区| 国产情侣一区| 亚洲高清久久| 欧美在线精品一区| 亚洲麻豆av| 老牛影视一区二区三区| 国产美女精品视频免费观看| 亚洲美女毛片| 免费看成人av| 欧美一区影院| 国产精品乱子久久久久| 亚洲精品一区二区三区av| 久久久久久亚洲综合影院红桃| 亚洲精选一区二区| 女女同性精品视频| 极品av少妇一区二区| 欧美不卡视频一区发布| 国产欧美一区二区三区另类精品| 亚洲精品中文字幕在线观看| 玖玖在线精品| 欧美一区中文字幕| 国产麻豆9l精品三级站| 亚洲在线电影| 亚洲毛片在线看| 欧美成人高清| 91久久综合| 你懂的视频一区二区| 亚洲欧美精品suv| 国产精品入口麻豆原神| 中国av一区| 亚洲美女中文字幕| 欧美紧缚bdsm在线视频| 亚洲精品一区二区三区av| 欧美福利一区二区三区| 久久夜色精品国产亚洲aⅴ| 极品尤物一区二区三区| 免费看精品久久片| 美女网站在线免费欧美精品| 亚洲二区免费| 女人香蕉久久**毛片精品| 久久久精品国产免大香伊| 精品成人在线| 欧美大片免费久久精品三p| 老司机凹凸av亚洲导航| 亚洲三级电影全部在线观看高清| 欧美激情视频网站| 欧美精品91| 亚洲资源av| 欧美一区二区私人影院日本| 黑人中文字幕一区二区三区| 美女久久网站| 欧美激情亚洲精品| 亚洲一区二区三区777| 亚洲在线视频| 在线观看欧美黄色| 亚洲免费观看在线视频| 国产精品系列在线播放| 久色成人在线| 欧美日韩国产丝袜另类| 亚洲欧美在线磁力| 久久久噜噜噜久久人人看| 亚洲精品综合在线| 亚洲字幕一区二区| 亚洲国内高清视频| 中国女人久久久| 精品粉嫩aⅴ一区二区三区四区| 亚洲国产成人高清精品| 国产精品入口| 亚洲国产精品一区二区尤物区 | 久久精品国产96久久久香蕉| 亚洲高清毛片| 亚洲一本视频| 亚洲黄一区二区| 亚洲免费小视频| 亚洲欧洲日本在线| 性欧美激情精品| 99视频超级精品| 欧美大片国产精品| 国产精品地址| 欧美国产视频一区二区| 国产精品美女久久| 亚洲欧洲日韩女同| 激情视频一区| 亚洲一区二区三区免费观看| 亚洲国产va精品久久久不卡综合| 亚洲一区网站| 亚洲免费播放| 久久夜色精品| 久久免费高清| 国产精品尤物| 亚洲伦伦在线| 日韩视频免费在线| 久色婷婷小香蕉久久| 久久激情五月婷婷| 国产精品老牛| 一区二区三区免费观看| 99日韩精品| 欧美女主播在线| 欧美国产专区| 亚洲国产婷婷香蕉久久久久久| 性久久久久久久久| 欧美在线国产精品| 国产精品日韩欧美综合| 一区二区三区视频在线观看| 中文av字幕一区| 欧美日韩国产综合一区二区| 亚洲经典视频在线观看| 亚洲精品久久7777| 欧美激情第8页| 亚洲精华国产欧美| 一区二区免费在线观看| 欧美日韩精品免费观看视频完整| 亚洲人成亚洲人成在线观看图片 | 另类图片国产| 伊人精品成人久久综合软件| 久久九九久精品国产免费直播| 久久精品欧美日韩| 国产一区二区三区在线观看精品 | 麻豆乱码国产一区二区三区| 国产一区二区三区在线观看免费视频 | 亚洲一区二区免费| 欧美日韩精品一区二区三区四区 | 在线观看欧美日韩国产| 浪潮色综合久久天堂| 欧美大尺度在线| 99热在这里有精品免费| 欧美日韩一区自拍| 亚洲欧美日韩精品久久| 国产欧美日韩三级| 久久久国产成人精品| 欧美黑人国产人伦爽爽爽| 亚洲麻豆视频| 国产精品久久久久77777| 亚洲欧美日韩综合| 欧美18av| 亚洲一区视频在线| 韩日午夜在线资源一区二区| 女人天堂亚洲aⅴ在线观看| 日韩系列在线| 久久一综合视频| 日韩亚洲精品视频| 国产日韩av高清| 欧美大片一区二区三区| 亚洲香蕉在线观看| 欧美大学生性色视频| 亚洲在线观看免费| 欲香欲色天天天综合和网| 欧美日韩国产综合久久| 欧美在线一二三| 日韩视频一区二区三区在线播放| 欧美在线free| av成人老司机| 国内精品免费在线观看| 欧美区二区三区| 久久精品免费电影| 中日韩视频在线观看| 欧美福利影院| 久久久久久综合| 亚洲淫性视频| 亚洲理论在线| 在线观看国产精品网站| 国产美女精品一区二区三区| 欧美另类高清视频在线| 久久久久女教师免费一区| 一区二区免费在线观看| 亚洲国产精品成人久久综合一区| 欧美在线亚洲| 午夜伦理片一区| 一区二区欧美激情| 亚洲欧洲在线观看| 亚洲国产高潮在线观看| 国内外成人在线视频| 国产女主播一区二区| 国产精品高潮在线| 欧美色图天堂网|