socket解析http協議頭

2021-06-17 19:34:53 字數 2684 閱讀 5072

以下為**:

/******* http客戶端程式 httpclient.c ************/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

開始///

/********************************************

功能:搜尋字串右邊起的第乙個匹配字元

********************************************/

char * rstrchr(char * s, char x)

/********************************************

功能:把字串轉換為全小寫

********************************************/

void tolowercase(char * s)

int main(int argc, char *argv)

printf("parameter.1 is: %s\n", argv[1]);

tolowercase(argv[1]);/*將引數轉換為全小寫*/

printf("lowercase parameter.1 is: %s\n", argv[1]);

gethost(argv[1], host_addr, host_file, &portnumber);/*分析**、埠、文件名等*/

printf("webhost:%s\n", host_addr);

printf("hostfile:%s\n", host_file);

printf("portnumber:%d\n\n", portnumber);

if((host=gethostbyname(host_addr))==null)/*取得主機ip位址*/

/* 客戶程式開始建立 sockfd描述符 */

if((sockfd=socket(af_inet,sock_stream,0))==-1)/*建立socket連線*/

/* 客戶程式填充服務端的資料 */

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)/*連線***/

printf("%s", request);/*準備request,將要傳送給主機*/

/*取得真實的文件名*/

if(host_file && *host_file) pt = rstrchr(host_file, '/');

else pt = 0;

memset(local_file, 0, sizeof(local_file));

if(pt && *pt)

else if(host_file && *host_file) strcpy(local_file, host_file);

else strcpy(local_file, "index.html");

printf("local filename to write:%s\n\n", local_file);

/*傳送http請求request*/

send = 0;totalsend = 0;

nbytes=strlen(request);

while(totalsend < nbytes)

totalsend+=send;

printf("%d bytes send ok!\n", totalsend);

}fp = fopen(local_file, "a");

if(!fp)

printf("\nthe following is the response header:\n");

i=0;

/* 連線成功了,接收http響應,response */

while((nbytes=read(sockfd,buffer,1))==1)

else

}fclose(fp);

/* 結束通訊 */

close(sockfd);

exit(0);

} 結束///

HTTP協議資訊頭

accept charset 瀏覽器告訴其他伺服器它採用的字符集 accept encoding 瀏覽器告訴伺服器所支援的壓縮格式 accept language 瀏覽器告訴伺服器所採用的語言 host 想訪問伺服器的哪台主機 if modified since 瀏覽器快取資料的時間 referer...

HTTP協議解析

客戶端 通過傳送請求獲取伺服器資源的 web 瀏覽器等.http hypertext transfer protocol,超文字傳輸協議 url uniform12resource locator,統一資源定位符 tcp ip 網際網路相關的各類協議族的總稱 uri 統一資源識別符號,表示由某個協議...

HTTP協議解析

1 http協議是什麼 http協議是工作在應用層的一種知名的通訊協議 大佬程式設計師寫的 負責應用程式之間的資料溝通。http是乙個簡單的請求 響應協議,它通常執行在tcp之上。它指定了客戶端可能傳送給伺服器什麼樣的訊息以及得到什麼樣的響應。2 http協議的格式解析 首行 請求首行 請求方法 g...