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

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 閱讀(573) 評論(0)  編輯 收藏 引用 所屬分類: Socket
<2010年11月>
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

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美黄在线观看| 欧美日韩亚洲一区二区三区在线| 欧美日韩视频在线一区二区观看视频 | 日韩一区二区免费看| 亚洲欧洲一区二区天堂久久| 欧美福利视频在线观看| 99国产精品国产精品久久| 亚洲精品日韩在线观看| 国产精品久久999| 久久国产视频网站| 久久三级视频| 一个人看的www久久| 在线综合亚洲欧美在线视频| 国产精品一区二区男女羞羞无遮挡| 亚洲欧美一区二区三区久久| 久久精品理论片| 日韩一二三区视频| 亚洲欧美久久久久一区二区三区| 黄色国产精品| 亚洲人成小说网站色在线| 国产精品推荐精品| 欧美电影在线播放| 国产精品成人aaaaa网站| 久久久久久尹人网香蕉| 欧美成人一区二区三区片免费| 亚洲性感美女99在线| 久久成人久久爱| 一区二区三区视频在线观看 | 欧美大尺度在线| 欧美午夜剧场| 欧美jizzhd精品欧美巨大免费| 欧美日韩精品二区| 可以免费看不卡的av网站| 欧美日韩免费一区| 免费成人美女女| 国产精品激情av在线播放| 欧美成人精品不卡视频在线观看| 国产精品久久久久77777| 牛牛影视久久网| 国产精品一区二区欧美| 亚洲激情网站免费观看| 精品福利av| 亚洲欧美中文日韩v在线观看| 亚洲美女毛片| 噜噜噜久久亚洲精品国产品小说| 欧美在线视频一区二区| 欧美日韩免费观看一区二区三区| 免费观看亚洲视频大全| 国产精品一区二区男女羞羞无遮挡| 亚洲欧洲综合| 亚洲人午夜精品| 久久久99久久精品女同性| 欧美一级午夜免费电影| 欧美日韩一区三区| 亚洲国产一二三| 91久久综合| 另类尿喷潮videofree| 久久久久久精| 国产自产精品| 欧美在线视频导航| 久久精品国产亚洲一区二区三区| 国产精品网站在线观看| 亚洲午夜av| 欧美亚洲自偷自偷| 国产精品久久久久婷婷| 亚洲综合社区| 久久精品麻豆| 精品电影在线观看| 久久性色av| 亚洲黄色免费| 一区二区三区高清在线 | 亚洲视频在线免费观看| 亚洲一区在线播放| 国产精品久久久久久妇女6080 | 久久五月激情| 亚洲第一精品夜夜躁人人躁| 麻豆精品一区二区av白丝在线| 欧美福利视频在线| 日韩一级片网址| 国产精品成人一区二区网站软件| 中文国产一区| 久久久久久久国产| 亚洲第一搞黄网站| 欧美激情综合五月色丁香小说| 99re这里只有精品6| 亚洲欧美在线看| 黄色资源网久久资源365| 久久先锋资源| 日韩手机在线导航| 欧美主播一区二区三区| 永久免费毛片在线播放不卡| 欧美成人午夜剧场免费观看| 亚洲伦伦在线| 久久久久久久综合狠狠综合| 亚洲精品1区2区| 国产精品mm| 久久久久国色av免费看影院 | 亚洲欧洲av一区二区| 国模私拍视频一区| 欧美激情在线狂野欧美精品| 亚洲午夜未删减在线观看| 麻豆91精品91久久久的内涵| 一区二区91| 一区二区三区在线免费视频| 欧美精品一区二区三区很污很色的 | 欧美中文字幕久久| 亚洲精品一区久久久久久| 欧美影院成年免费版| 亚洲国产日韩在线| 国产精品主播| 欧美日韩国产在线一区| 欧美伊人久久| 亚洲午夜精品久久久久久浪潮| 久久在线免费观看| 午夜精彩视频在线观看不卡| 亚洲高清网站| 国产一区二区成人| 欧美亚洲第一页| 欧美韩日一区| 久久久久久国产精品mv| 亚洲一区国产视频| 亚洲日本va午夜在线影院| 美女999久久久精品视频| 亚洲欧美国产毛片在线| 99精品视频免费观看| 亚洲电影av在线| 国内精品免费午夜毛片| 国产伦精品一区二区三区视频黑人 | 亚洲第一页在线| 久久先锋影音av| 欧美在线free| 欧美亚洲日本网站| 亚洲一区二区少妇| 一区二区三区日韩精品视频| 亚洲片在线观看| 亚洲高清色综合| 娇妻被交换粗又大又硬视频欧美| 国产欧美视频一区二区| 国产精品久久久久久av福利软件 | 国产有码一区二区| 国产情侣一区| 国产伦精品一区二区三区在线观看| 欧美三级视频在线| 欧美日韩一级黄| 欧美三区免费完整视频在线观看| 欧美人交a欧美精品| 欧美国产日本韩| 欧美日本一区二区三区| 欧美日韩国产在线播放网站| 欧美日本一区二区三区| 欧美日韩一区二区视频在线| 欧美色图天堂网| 国产精品国产a| 国产精品视频区| 国产午夜精品久久久久久免费视| 国产日韩在线不卡| 韩国成人精品a∨在线观看| 红桃视频一区| 亚洲日本成人| 一二三四社区欧美黄| 亚洲一区二区三区精品视频| 香蕉精品999视频一区二区| 欧美与黑人午夜性猛交久久久| 久久久久国产一区二区三区| 麻豆91精品91久久久的内涵| 亚洲第一综合天堂另类专| 亚洲日本成人女熟在线观看| 一区二区三区日韩精品视频| 亚洲欧美日本在线| 久久婷婷国产综合尤物精品| 欧美日韩国产va另类| 国产精品久久久久高潮| 狠狠色狠狠色综合日日tαg| 亚洲国产导航| 亚洲尤物在线视频观看| 久久免费视频一区| 亚洲精品女av网站| 亚洲精品一级| 久久成人精品电影| 欧美精品三级| 国产一区日韩二区欧美三区| 亚洲精品国产精品国自产观看| 午夜精品亚洲| 亚洲成人直播| 欧美亚洲自偷自偷| 欧美日韩国产亚洲一区| 狠狠色综合网站久久久久久久| 日韩一级在线| 久久综合久久综合久久| 99国产精品久久久| 你懂的国产精品| 国产一区二区三区在线观看精品 | 亚洲欧美另类国产| 欧美高清不卡| 性久久久久久| 欧美午夜免费电影| 亚洲日本电影在线| 久久视频在线视频| 亚洲尤物影院| 欧美性猛交99久久久久99按摩 |