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

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
<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(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>
            欧美激情一区二区三区成人| 欧美激情亚洲激情| 亚洲综合三区| 国产欧美亚洲日本| 久久精品观看| 久久久久久久波多野高潮日日| 国语自产精品视频在线看抢先版结局 | 国产精品一区久久久| 亚洲男人第一av网站| 亚洲欧美日韩视频一区| 国产日韩精品久久| 欧美顶级艳妇交换群宴| 欧美激情影院| 另类天堂av| 日韩视频精品在线| 亚洲一级片在线观看| 国内偷自视频区视频综合| 免费观看成人网| 欧美视频在线一区| 久久麻豆一区二区| 欧美精品一区二区三区在线看午夜| 亚洲一区二区三区精品动漫| 亚洲欧美日韩另类| 亚洲国产一区视频| 亚洲免费视频观看| 亚洲国产精品久久久久婷婷884| 99精品热视频只有精品10| 欧美va亚洲va日韩∨a综合色| 亚洲一二三级电影| 久久久久久久久久久久久女国产乱 | 国产欧美精品日韩精品| 免费一区二区三区| 国产精品高清一区二区三区| 老色批av在线精品| 国产精品免费小视频| 欧美成人高清| 国产午夜精品久久久久久免费视| 亚洲国产精品久久久久| 国产欧美日韩一区二区三区在线观看| 免费在线欧美黄色| 国产精品青草久久久久福利99| 亚洲成人在线网站| 欧美激情亚洲| 美女视频一区免费观看| 国产精品私房写真福利视频| 亚洲高清在线视频| 激情视频一区二区| 亚洲主播在线| 亚洲专区一区| 欧美日韩午夜| 亚洲激情视频在线播放| 亚洲电影免费在线观看| 欧美中文在线字幕| 亚洲欧美日韩电影| 欧美日韩一区二区三区免费看| 欧美激情中文字幕在线| 在线观看一区| 久久全国免费视频| 久久伊人精品天天| 黄色小说综合网站| 欧美一区高清| 久久久久久国产精品mv| 国产日韩在线视频| 香蕉免费一区二区三区在线观看| 亚洲欧美日韩精品久久亚洲区 | 国内精品国产成人| 午夜精品久久久久久| 性欧美在线看片a免费观看| 欧美亚洲第一页| 亚洲视频1区2区| 亚洲欧美日韩国产综合在线| 国产精品黄色在线观看| 亚洲天堂av综合网| 欧美在线免费观看亚洲| 国产亚洲欧洲一区高清在线观看| 亚洲免费视频中文字幕| 久久狠狠亚洲综合| 国产在线观看一区| 另类成人小视频在线| 亚洲高清电影| 亚洲午夜精品福利| 国产美女一区| 久久久久91| 亚洲国产精品久久久| 在线视频你懂得一区| 国产精品久久久久久久久久免费看| 国产精品99久久久久久宅男| 欧美有码在线视频| 在线精品视频免费观看| 欧美成人自拍| 亚洲一区精品电影| 久久久久久69| 亚洲精品一区二区三区99| 欧美日韩日日骚| 午夜免费日韩视频| 欧美激情视频一区二区三区免费| 亚洲天堂av高清| 国产一区二区三区久久 | 在线观看日韩精品| 欧美精品久久久久a| 亚洲视频视频在线| 免费欧美网站| 午夜国产精品视频| **欧美日韩vr在线| 国产精品久久久久aaaa| 久久综合一区二区| 亚洲午夜精品一区二区三区他趣| 免费成人在线观看视频| 亚洲一区在线看| 亚洲电影欧美电影有声小说| 欧美午夜一区二区三区免费大片 | 最新国产成人av网站网址麻豆| 亚洲欧美国产三级| 亚洲欧洲一区二区在线播放| 国产精品揄拍一区二区| 欧美大片91| 久久精品官网| 亚洲男人第一网站| 亚洲免费观看高清在线观看 | 亚洲精品国产欧美| 老司机午夜精品视频| 亚洲一区中文| 日韩午夜电影av| 亚洲电影av| 韩国欧美一区| 国产欧亚日韩视频| 国产精品99免费看| 欧美精品久久久久久久久久| 另类av一区二区| 久久精品理论片| 欧美一区二区免费观在线| 中文精品视频| 99精品国产一区二区青青牛奶| 亚洲国产精品成人综合| 欧美aⅴ一区二区三区视频| 久久久久久久一区| 欧美在线视屏| 久久成人精品视频| 午夜亚洲一区| 午夜在线视频观看日韩17c| 宅男噜噜噜66一区二区66| 亚洲美女视频在线观看| 亚洲精品在线看| 亚洲精品影视| 夜夜夜久久久| 亚洲无线视频| 亚洲图片欧洲图片av| 亚洲一区欧美一区| 亚洲欧美日韩另类| 先锋影音久久| 久久er精品视频| 久久天堂av综合合色| 久热综合在线亚洲精品| 美女图片一区二区| 欧美激情bt| 艳女tv在线观看国产一区| 一本色道久久88综合日韩精品 | 欧美激情视频网站| 亚洲高清毛片| 99国产精品| 亚洲欧美激情在线视频| 久久国产精品久久w女人spa| 久久久蜜桃精品| 欧美二区不卡| 欧美视频日韩| 国产一区二区三区在线观看免费| 影音先锋国产精品| 99这里只有精品| 午夜视频一区二区| 麻豆成人在线| 亚洲免费久久| 久久av一区二区三区亚洲| 麻豆精品91| 欧美婷婷六月丁香综合色| 国产日本欧美一区二区三区在线| 好看不卡的中文字幕| 亚洲美女黄网| 久久精品国产在热久久| 亚洲国产精品一区制服丝袜| 一区二区三区视频观看| 久久精品国产99精品国产亚洲性色| 蜜桃视频一区| 国产欧美日本在线| 亚洲精品中文字幕在线| 香蕉av777xxx色综合一区| 欧美成人精品激情在线观看 | 久久久久久97三级| 亚洲精品一区在线| 久久狠狠婷婷| 欧美亚一区二区| 亚洲国产高清在线观看视频| 亚洲一区二区成人在线观看| 欧美成年人视频网站| 亚洲欧美综合v| 欧美视频成人| 亚洲毛片在线免费观看| 裸体一区二区| 午夜天堂精品久久久久| 欧美精品一区二区三| …久久精品99久久香蕉国产|