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

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>
            9色porny自拍视频一区二区| 久久亚洲私人国产精品va| 亚洲激情在线| 欧美激情国产日韩| 亚洲一级高清| 亚洲欧美影音先锋| 影音先锋日韩资源| 亚洲激情视频在线| 国产精品免费网站| 久久久久一区二区| 欧美波霸影院| 亚洲综合视频一区| 久久久一二三| 中文国产成人精品| 欧美与黑人午夜性猛交久久久| 亚洲国产三级| 中日韩在线视频| 一区二区在线观看av| 亚洲激情偷拍| 国内一区二区三区| 99国产一区| 一区二区三区在线免费播放| 亚洲精品一区二区网址| 国产日韩欧美三级| 亚洲精品国产精品国自产在线| 国产精品自在在线| 欧美岛国激情| 国产一区二区三区免费在线观看| 欧美成人伊人久久综合网| 欧美日韩人人澡狠狠躁视频| 久久男人av资源网站| 欧美日韩精品一区二区天天拍小说 | 免费观看成人网| 亚洲一区二区三区免费观看| 久久激情一区| 亚洲视频电影图片偷拍一区| 久久久久成人网| 午夜精品一区二区三区四区| 欧美成人精品一区二区三区| 久久免费少妇高潮久久精品99| 国产精品成人aaaaa网站| 欧美成人一区二免费视频软件| 国产精品一区2区| 亚洲精品乱码| 最新69国产成人精品视频免费| 性久久久久久久久| 亚洲一区二区综合| 欧美精品导航| 欧美激情一区二区三区高清视频| 国产日韩欧美一区在线| 一本高清dvd不卡在线观看| 亚洲国产精品福利| 久久精品日韩| 久久一二三国产| 国产无遮挡一区二区三区毛片日本| 日韩一级大片在线| 亚洲视频香蕉人妖| 欧美日韩精品福利| 艳妇臀荡乳欲伦亚洲一区| avtt综合网| 欧美午夜片欧美片在线观看| 亚洲乱码国产乱码精品精可以看| 99re热这里只有精品视频| 女女同性精品视频| 亚洲欧洲在线一区| 一区二区三区国产在线观看| 欧美久久久久久蜜桃| 亚洲每日在线| 午夜老司机精品| 国产精品视频网| 亚洲一区二区三区视频| 久久超碰97人人做人人爱| 国产亚洲一区二区三区| 久久久久9999亚洲精品| 久久亚洲综合| 91久久综合亚洲鲁鲁五月天| 欧美激情小视频| 一本久久a久久精品亚洲| 亚洲欧美日韩国产精品 | 久久免费视频网| 欧美91精品| 一区二区欧美日韩视频| 国产精品欧美一区二区三区奶水| 亚洲综合日韩中文字幕v在线| 久久精品盗摄| 亚洲国产欧美国产综合一区| 欧美激情在线有限公司| 亚洲一区二区三区高清| 久久久亚洲影院你懂的| 亚洲三级色网| 国产酒店精品激情| 美女国内精品自产拍在线播放| 亚洲精品久久久蜜桃| 欧美淫片网站| 亚洲人成小说网站色在线| 国产精品豆花视频| 久久久噜噜噜久噜久久| 夜夜狂射影院欧美极品| 久久免费视频在线观看| 99在线热播精品免费99热| 午夜亚洲福利| 亚洲欧洲在线看| 欧美亚洲成人免费| 久久一区二区三区av| 日韩一级免费| 欧美国产日韩在线观看| 欧美一区二区三区成人| 日韩视频免费观看| 国产在线观看精品一区二区三区 | 久久久五月天| 亚洲综合成人婷婷小说| 亚洲人成在线观看网站高清| 久久久久久久国产| 亚洲女女做受ⅹxx高潮| 亚洲日本视频| 在线精品观看| 国产真实乱子伦精品视频| 欧美日韩一区二区免费在线观看| 久久天天综合| 新67194成人永久网站| 亚洲桃色在线一区| 99亚洲视频| 亚洲日本国产| 亚洲经典一区| 亚洲国产精品高清久久久| 麻豆免费精品视频| 久久久久一本一区二区青青蜜月| 香蕉av福利精品导航| 亚洲一级二级| 亚洲图片激情小说| 一本一本久久a久久精品综合麻豆| 在线成人h网| 极品尤物久久久av免费看| 国产一区二区三区在线播放免费观看| 国产精品多人| 国产精品一区在线播放| 国产精品亚洲综合一区在线观看| 欧美亚州一区二区三区 | 欧美不卡福利| 欧美成人精品在线播放| 欧美国产精品一区| 欧美极品aⅴ影院| 欧美日韩a区| 欧美午夜电影一区| 国产精品美女| 狠狠88综合久久久久综合网| 欧美色区777第一页| 国产精品扒开腿爽爽爽视频 | 猛干欧美女孩| 欧美大胆a视频| 欧美片在线播放| 国产精品高潮久久| 国产欧美日韩免费| 激情综合视频| 日韩一级视频免费观看在线| 亚洲一区bb| 欧美中在线观看| 免费黄网站欧美| 亚洲日本欧美在线| 亚洲素人在线| 久久九九精品99国产精品| 免费亚洲网站| 欧美性感一类影片在线播放| 国产欧美精品| 亚洲电影av在线| 亚洲午夜激情| 毛片av中文字幕一区二区| 亚洲高清av在线| 亚洲一区精彩视频| 久久蜜臀精品av| 欧美性大战久久久久久久| 国产综合激情| 中文一区二区在线观看| 久久久噜噜噜久久久| 最新国产成人av网站网址麻豆| 裸体素人女欧美日韩| 亚洲国产你懂的| 欧美一区二区三区精品| 欧美成人一区二免费视频软件| 一本色道久久综合亚洲精品按摩 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久 | 欧美jizzhd精品欧美巨大免费| 亚洲精品久久久久久一区二区| 亚洲视频在线看| 麻豆freexxxx性91精品| 国产精品毛片一区二区三区| 91久久久久久久久| 久久国产天堂福利天堂| 亚洲精品一区二区三区四区高清| 久久精品成人欧美大片古装| 欧美视频二区36p| 91久久精品国产| 久久免费黄色| 亚洲在线观看免费视频| 欧美日韩精品一区二区在线播放| 一区二区三区在线看| 久久狠狠亚洲综合| 亚洲视频欧美在线| 欧美日韩在线一区| 日韩视频一区二区三区在线播放|