freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

word版可編輯-嵌入式web服務(wù)器設(shè)計(jì)精心整理doc-資料下載頁(yè)

2025-07-15 11:59本頁(yè)面
  

【正文】 說(shuō)明:根據(jù)參數(shù)的不同發(fā)送不同的協(xié)議頭信息*/{ alarm(TIMEOUT)。 fprintf(f,HTTP/ 200 OK\n)。/*發(fā)送請(qǐng)求成功信息 函數(shù)中的第一個(gè)參數(shù)f為客戶連接文件流句柄根據(jù)文檔類型發(fā)送相應(yīng)的信息*/ switch (content_type) { case 39。t39。: fprintf(f,Contenttype: text/plain\n)。 break。 case 39。g39。: fprintf(f,Contenttype: image/gif\n)。 break。 case 39。j39。: fprintf(f,Contenttype: image/jpeg\n)。 break。 case 39。h39。: fprintf(f,Contenttype: text/html\n)。 break。 } fprintf(f,Server: uClinuxd \n)。//發(fā)送服務(wù)器信息 fprintf(f,Expires: 0\n)。//發(fā)送文件有效期為永不過(guò)期 fprintf(f,\n)。 alarm(0)。 return(0)。}int DoJpeg(FILE *f, char *name)。/*發(fā)送JPEG圖像文件內(nèi)容 參數(shù)1 文件流FILE的結(jié)構(gòu)指針,用于表示客戶連接的文件流指針,用于寫入文件信息數(shù)據(jù) 參數(shù)2 客戶請(qǐng)求的文件名*/{ char *buf。 FILE * infile。 int count。 if (!(infile = fopen(name, r))) { /*name表示是要打開的文件名,r表示對(duì)文件的使用方式為只讀方式*/ alarm(TIMEOUT)。 fprintf(stderr, Unable to open JPEG file %s, %d\n, name, errno)。 fflush(f)。//清除一個(gè)流 alarm(0)。 return 1。 } PrintHeader(f,39。j39。)。 copy(infile,f)。 // prints the page alarm(TIMEOUT)。 fclose(infile)。/*正常完成關(guān)閉文件操作時(shí),fclose函數(shù)返回值為0。如返回非零值則表示有錯(cuò)誤發(fā)生。*/ alarm(0)。 return 0。}int DoGif(FILE *f, char *name)。//發(fā)送GIF圖像文件內(nèi)容{ char *buf。 FILE * infile。 int count。 if (!(infile = fopen(name, r))) { /*執(zhí)行fopen函數(shù)時(shí)如果順利打開,則將該文件信息區(qū)(結(jié)構(gòu)體變量)的起始地址賦給指針變量infile,即使infile指向與文件操作對(duì)應(yīng)的流;如果文件打開失敗,則infile的值為NULL*/ alarm(TIMEOUT)。 fprintf(stderr, Unable to open GIF file %s, %d\n, name, errno)。 fflush(f)。 alarm(0)。 return 1。 } PrintHeader(f,39。g39。)。 copy(infile,f)。 /* prints the page */ alarm(TIMEOUT)。 fclose(infile)。 alarm(0)。 return 0。}int DoDir(FILE *f, char *name)。/*發(fā)送當(dāng)前目錄文件列表信息 參數(shù)2 目錄名 表示客戶請(qǐng)求的目錄信息*/{ char *buf。 DIR * dir。 struct dirent * dirent。/*定義一個(gè)指向結(jié)構(gòu)體類型數(shù)據(jù)的指針變量 通過(guò)指針變量dirent可以指向任何一個(gè)屬于dirent類型的結(jié)構(gòu)體變量,并且可以用該指針引用所指向的結(jié)構(gòu)體變量的成員*/ if ((dir = opendir(name))== 0) { fprintf(stderr, Unable to open directory %s, %d\n, name, errno)。 fflush(f)。 return 1。 } PrintHeader(f,39。h39。)。 alarm(TIMEOUT)。 fprintf(f, H1Index of %s/H1\n\n,name)。 alarm(0)。 if (name[strlen(name)1] != 39。/39。) { strcat(name, /)。 } while(dirent = readdir(dir)) { alarm(TIMEOUT)。 fprintf(f, pa href=\/%s%s\%s/a/p\n, name, direntd_name, direntd_name)。 alarm(0)。 } closedir(dir)。 return 0。}int DoHTML(FILE *f, char *name)。//發(fā)送HTML文件內(nèi)容{ char *buf。 FILE *infile。 int count。 char * dir = 0。 if (!(infile = fopen(name,r))) { alarm(TIMEOUT)。 fprintf(stderr, Unable to open HTML file %s, %d\n, name, errno)。 fflush(f)。 alarm(0)。 return 1。 } PrintHeader(f,39。h39。)。 copy(infile,f)。 /* prints the page */ alarm(TIMEOUT)。 fclose(infile)。 alarm(0)。 return 0。}int DoText(FILE *f, char *name)。//發(fā)送純文本文件內(nèi)容{ char *buf。 FILE *infile。 int count。 if (!(infile = fopen(name,r))) { alarm(TIMEOUT)。 fprintf(stderr, Unable to open text file %s, %d\n, name, errno)。 fflush(f)。 alarm(0)。 return 1。 } PrintHeader(f,39。t39。)。 copy(infile,f)。 /* prints the page */ alarm(TIMEOUT)。 fclose(infile)。 alarm(0)。 return 0。}int ParseReq(FILE *f, char *r)。/*解析客戶請(qǐng)求 參數(shù)2 字符串指針,待解析的字符串*/{ char *bp。 struct stat stbuf。 char * arg。 char * c。 int e。 int raw。ifdef DEBUG printf(req is 39。%s39。\n, r)。endif while(*(++r) != 39。 39。)。 //skip nonwhite space while(isspace(*r)) r++。 while (*r == 39。/39。) r++。 bp = r。 while(*r amp。amp。 (*(r) != 39。 39。) amp。amp。 (*(r) != 39。?39。)) r++。 ifdef DEBUG printf(bp=39。%s39。 %x, r=39。%s39。 \n, bp, *bp,r)。endif if (*r == 39。?39。) { char * e。 *r = 0。 arg = r+1。 if (e = strchr(arg,39。 39。)) { *e = 39。\039。 } } else { arg = 0。 *r = 0。 } c = bp。/*zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz*/ if (c[0] == 0x20){ c[0]=39。.39。 c[1]=39。\039。 }/*zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz*/ if(c[0] == 39。\039。) strcat(c,.)。 if (c amp。amp。 !stat(c, amp。stbuf)) { if (S_ISDIR()) { char * end = c + strlen(c)。 strcat(c, /)。 if (!stat(c, amp。stbuf)) { DoHTML(f, c)。 } else { *end = 39。\039。 DoDir(f,c)。 } } else if (!strcmp(r 4, .gif)) DoGif(f,c)。 else if (!strcmp(r 4, .jpg) || !strcmp(r 5, .jpeg)) DoJpeg(f,c)。 else if (!strcmp(r 4, .htm) || !strcmp(r 5, .html)) DoHTML(f,c)。 else DoText(f,c)。 } else{ PrintHeader(f,39。h39。)。 alarm(TIMEOUT)。 fprintf(f, htmlheadtitle404 File Not Found/title/head\n)。 fprintf(f, bodyThe requested URL was not found on this server/body/html\n)。 alarm(0)。 } return 0。}void sigalrm(int signo){ /* got an alarm, exit amp。 recycle */ exit(0)。}int HandleConnect(int fd)。/*接口設(shè)計(jì) 客戶連接處理 參數(shù):客戶連接文件描述字*/{ FILE *f。 char buf[160]。 char buf1[160]。 f = fdopen(fd,a+)。 if (!f) { fprintf(stderr, d: Unable to open d input fd, error %d\n, errno)。 alarm(TIMEOUT)。 close(fd)。 alarm(0)。 return 0。 } setbuf(f, 0)。 alarm(TIMEOUT)。 if (!fgets(buf, 150, f)) { fprintf(stderr, d: Error reading connection, error %d\n, errno)。 fclose(f)。 alarm(0)。 return 0。 }ifdef DEBUG //ifdef是C語(yǔ)言的預(yù)定義命令 命令即:判斷宏是否定義 printf(buf = 39。%s39。\n, buf)。endif alarm(0)。 referrer[0] = 39。\039。 content_length = 1。 alarm(TIMEOUT)。/*read other line to parse Rrferrer and content_length information*/ while (fgets(buf1, 150, f) amp。amp。 (strlen(buf1) 2)) {
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1