xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

運用網絡編程和并發編程的知識,設計一個簡單的web服務器,在實現的過程中學習網絡套接字編程、HTTP 協議、Web 服務器、cgi'等知識;提供靜態網頁瀏覽服務功能、動態網頁服務功能,以及可以顯示圖片。

資源截圖

代碼片段和文件信息

/*?$begin?tinymain?*/
/*
?*?tiny.c?-?A?simple?iterative?HTTP/1.0?Web?server?that?uses?the?
?*?????GET?method?to?serve?static?and?dynamic?content.
?*/
#include?“csapp.h“

void?doit(int?fd);
void?read_requesthdrs(rio_t?*rp);
int?parse_uri(char?*uri?char?*filename?char?*cgiargs);
void?serve_static(int?fd?char?*filename?int?filesize);
void?get_filetype(char?*filename?char?*filetype);
void?serve_dynamic(int?fd?char?*filename?char?*cgiargs);
void?clienterror(int?fd?char?*cause?char?*errnum?
?char?*shortmsg?char?*longmsg);

int?main(int?argc?char?**argv)?
{
????int?listenfd?connfd?port?clientlen;
????struct?sockaddr_in?clientaddr;

????/*?檢查命令行參數?*/
????if?(argc?!=?2)?{
????????/*fprintf函數
原型:int?fprintf?(?FILE?*?stream?const?char?*?format?...?);
描述:將格式指向的C字符串寫入流中
參數:stream:指向標識輸出流的FILE對象的指針。
??????format:包含要寫入流的文本的C字符串。
返回值:成功:返回寫入的字符總數。
發生寫入錯誤:設置錯誤指示符(ferror)并返回負數。
編寫寬字符時發生多字節字符編碼錯誤:將errno置為EILSEQ,返回負數
????????*/
fprintf(stderr?“usage:?%s?\n“?argv[0]);
exit(1);
????}
????//atoi方法將字符串變成整型
????port?=?atoi(argv[1]);
????//調用csapp頭文件中的Open_listenfd方法
????listenfd?=?Open_listenfd(port);
????while?(1)?{
clientlen?=?sizeof(clientaddr);
connfd?=?Accept(listenfd?(SA?*)&clientaddr?&clientlen);?
doit(connfd);?????????????????????????????????????????????
Close(connfd);????????????????????????????????????????????
????}
}



/*?doit?-?處理一個HTTP請求/響應事務*/
void?doit(int?fd)?
{
????int?is_static;
????/*struct?stat:描述一個linux系統文件系統中的文件屬性的結構。
??????struct?stat?{
????????mode_t?????st_mode;???????//文件對應的模式,文件,目錄等
????????ino_t??????st_ino;???????//inode節點號
????????dev_t??????st_dev;????????//設備號碼
????????dev_t??????st_rdev;???????//特殊設備號碼
????????nlink_t????st_nlink;??????//文件的連接數
????????uid_t??????st_uid;????????//文件所有者
????????gid_t??????st_gid;????????//文件所有者對應的組
????????off_t??????st_size;???????//普通文件,對應的文件字節數
????????time_t?????st_atime;??????//文件最后被訪問的時
????????time_t?????st_mtime;??????//文件內容最后被修改的時間
????????time_t?????st_ctime;??????//文件狀態改變時間
????????blksize_t?st_blksize;????//文件內容對應的塊大小
????????blkcnt_t???st_blocks;?????//偉建內容對應的塊數量?};
????*/
????struct?stat?sbuf;
????char?buf[MAXLINE]?method[MAXLINE]?uri[MAXLINE]?version[MAXLINE];
????char?filename[MAXLINE]?cgiargs[MAXLINE];
????rio_t?rio;
??
????/*?Read?request?line?and?headers?*/
????/*void?rio_readinitb(rio_t?*rp?int?fd)
描述:rio_t?結構體初始化并綁定文件描述符與緩沖區
參數:rio_t結構體
? ??????fd?文件描述符
????*/
????Rio_readinitb(&rio?fd);//將rio初始化
????/*ssize_t?rio_readlineb(rio_t?*rp?void?*usrbuf?size_t?maxlen)
???????描述:讀取一行的數據,遇到‘\n‘結尾代表一行
???????參數:rp:rio_t包
?????????????usrbuf:用戶地址,即目的地址
?????size_t?一行最大的長度。若一行數據超過最大長度,則以‘\0‘截斷
???????返回值:真正讀取到的字符數量
????*/
????Rio_readlineb(&rio?buf?MAXLINE);?//讀取rio的一行到buf中
????/*sscanf函數
??????原型??int?sscanf?(const?char?*strconst?char?*?format........);???????
??????函數說明??將參數str的字符串根據參數format字符串來轉換并格式化數據
??????返回值?成功返回參數數目,失敗返回-1,錯誤原因存于errno?返回0表示失敗?*/??????????????????
????sscanf(buf?“%s?%s?%s“?method?uri?version);//將buf中的值以空格為分界

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????1701??2020-07-30?23:47??實習代碼\cgi-bin\adder.c

?????文件??????31762??2020-07-31?08:12??實習代碼\cgi-bin\adder.cgi

?????文件????????963??2020-07-30?23:05??實習代碼\cgi-bin\adder.c~

?????文件????????393??2020-07-31?08:51??實習代碼\cgi-bin\first.c

?????文件???????8647??2020-07-31?08:51??實習代碼\cgi-bin\first.cgi

?????文件????????397??2020-07-31?08:47??實習代碼\cgi-bin\first.c~

?????文件????????179??2020-07-29?15:35??實習代碼\csapp\cpstdin.c

?????文件??????17773??2020-07-29?15:36??實習代碼\csapp\csapp.c

?????文件??????23041??2020-07-29?15:56??實習代碼\csapp\csapp.h

?????文件????????303??2020-03-12?11:46??實習代碼\example1_travel\example1_travel.iml

?????文件??????11206??2020-03-12?15:42??實習代碼\example1_travel\h1_first_page.html

?????文件?????472751??2018-01-26?14:10??實習代碼\example1_travel\image\banner_1.jpg

?????文件?????483792??2018-01-26?15:34??實習代碼\example1_travel\image\banner_2.jpg

?????文件?????417348??2018-01-26?15:35??實習代碼\example1_travel\image\banner_3.jpg

?????文件??????33932??2018-01-30?13:31??實習代碼\example1_travel\image\footer_service.png

?????文件?????169953??2018-01-26?14:10??實習代碼\example1_travel\image\guonei_1.jpg

?????文件???????9831??2018-01-30?13:44??實習代碼\example1_travel\image\hotel_tel.png

?????文件???????3024??2018-01-26?14:10??實習代碼\example1_travel\image\hot_tel.jpg

?????文件???????5113??2018-01-26?14:10??實習代碼\example1_travel\image\icon_1.jpg

?????文件???????4791??2018-01-26?14:10??實習代碼\example1_travel\image\icon_2.jpg

?????文件???????4986??2018-01-26?14:10??實習代碼\example1_travel\image\icon_3.jpg

?????文件???????4624??2018-01-26?14:10??實習代碼\example1_travel\image\icon_4.jpg

?????文件???????2471??2018-01-26?14:16??實習代碼\example1_travel\image\icon_5.jpg

?????文件???????2986??2018-01-26?14:16??實習代碼\example1_travel\image\icon_6.jpg

?????文件???????2668??2018-01-26?14:10??實習代碼\example1_travel\image\icon_7.jpg

?????文件?????143051??2018-01-26?14:10??實習代碼\example1_travel\image\jiangwai_1.jpg

?????文件??????44779??2018-01-26?14:10??實習代碼\example1_travel\image\jiangxuan_1.jpg

?????文件??????41113??2018-01-26?14:10??實習代碼\example1_travel\image\jiangxuan_2.jpg

?????文件??????38788??2018-01-26?14:10??實習代碼\example1_travel\image\jiangxuan_3.jpg

?????文件??????32906??2018-01-26?14:10??實習代碼\example1_travel\image\jiangxuan_4.jpg

............此處省略37個文件信息

評論

共有 條評論