亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? httpd.c

?? 在pxa270上構建http服務器的源碼
?? C
字號:
/* httpd.c:  A very simple http server * Copyfight (C) 2003      Zou jian guo <ah_zou@163.com> * Copyright (C) 2000  	   Lineo, Inc.  (www.lineo.com) * Copyright (c) 1997-1999 D. Jeff Dionne <jeff@lineo.ca> * Copyright (c) 1998      Kenneth Albanowski <kjahds@kjahds.com> * Copyright (c) 1999      Nick Brok <nick@nbrok.iaehv.nl> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * */#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>#include <sys/stat.h>#include <dirent.h>#include <signal.h>#include <unistd.h>#include <ctype.h>#include "pthread.h"#define DEBUGint KEY_QUIT=0;int TIMEOUT=30;#ifndef O_BINARY#define O_BINARY 0#endifchar referrer[128];int content_length;#define SERVER_PORT 80int PrintHeader(FILE *f, int content_type){  alarm(TIMEOUT);  fprintf(f,"HTTP/1.0 200 OK\n");  switch (content_type)  {    case 't':    fprintf(f,"Content-type: text/plain\n");    break;   case 'g':    fprintf(f,"Content-type: image/gif\n");    break;   case 'j':    fprintf(f,"Content-type: image/jpeg\n");    break;   case 'h':    fprintf(f,"Content-type: text/html\n");    break;  }  fprintf(f,"Server: uClinux-httpd 0.2.2\n");  fprintf(f,"Expires: 0\n");  fprintf(f,"\n");  alarm(0);  return(0);}int DoJpeg(FILE *f, char *name){  char *buf;  FILE * infile;  int count;   if (!(infile = fopen(name, "r"))) {    alarm(TIMEOUT);    fprintf(stderr, "Unable to open JPEG file %s, %d\n", name, errno);    fflush(f);    alarm(0);    return -1;  }   PrintHeader(f,'j');	   copy(infile,f); /* prints the page */   alarm(TIMEOUT);  fclose(infile);  alarm(0);   return 0;}int DoGif(FILE *f, char *name){  char *buf;  FILE * infile;  int count;  if (!(infile = fopen(name, "r"))) {    alarm(TIMEOUT);    fprintf(stderr, "Unable to open GIF file %s, %d\n", name, errno);    fflush(f);    alarm(0);    return -1;  }    PrintHeader(f,'g');  copy(infile,f); /* prints the page */    alarm(TIMEOUT);  fclose(infile);  alarm(0);    return 0;}int DoDir(FILE *f, char *name){  char *buf;  DIR * dir;  struct dirent * dirent;  if ((dir = opendir(name))== 0) {    fprintf(stderr, "Unable to open directory %s, %d\n", name, errno);    fflush(f);    return -1;  }    PrintHeader(f,'h');    alarm(TIMEOUT);  fprintf(f, "<H1>Index of %s</H1>\n\n",name);  alarm(0);  if (name[strlen(name)-1] != '/') {	strcat(name, "/");  }    while(dirent = readdir(dir)) {	alarm(TIMEOUT);  	fprintf(f, "<p><a href=\"/%s%s\">%s</a></p>\n", name, dirent->d_name, dirent->d_name);	alarm(0);  }    closedir(dir);  return 0;}int DoHTML(FILE *f, char *name){  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,'h');  copy(infile,f); /* prints the page */    alarm(TIMEOUT);  fclose(infile);  alarm(0);  return 0;}int DoText(FILE *f, char *name){  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,'t');  copy(infile,f); /* prints the page */    alarm(TIMEOUT);  fclose(infile);  alarm(0);  return 0;}int ParseReq(FILE *f, char *r){  	char *bp;  	struct stat stbuf;  	char * arg;  	char * c;  	int e;  	int raw;#ifdef DEBUG  	printf("req is '%s'\n", r);#endif    	while(*(++r) != ' ');  /*skip non-white space*/  	while(isspace(*r))  		r++;    	while (*r == '/')  		r++;  	bp = r;    	while(*r && (*(r) != ' ') && (*(r) != '?'))  		r++;  	#ifdef DEBUG  	printf("bp='%s' %x, r='%s' \n", bp, *bp,r);#endif  	  	if (*r == '?')  	{  		char * e;  		*r = 0;  		arg = r+1;  		if (e = strchr(arg,' ')) 		{  			*e = '\0';  		}  	} else     {  		arg = 0;	  	*r = 0;    }    	c = bp;/*zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz*/      	if (c[0] == 0x20){		c[0]='.';		c[1]='\0'; 	}/*zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz*/    	if(c[0] == '\0') strcat(c,".");			if (c && !stat(c, &stbuf))   	{    	if (S_ISDIR(stbuf.st_mode))     	{     		char * end = c + strlen(c);    		strcat(c, "/index.html");    		if (!stat(c, &stbuf))         	{    			DoHTML(f, c);    		}         	else         	{  				*end = '\0';				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,'h');  		alarm(TIMEOUT);	  	fprintf(f, "<html><head><title>404 File Not Found</title></head>\n");		fprintf(f, "<body>The requested URL was not found on this server</body></html>\n");	  	alarm(0);    }  	return 0;}void sigalrm(int signo){	/* got an alarm, exit & recycle */	exit(0);}int HandleConnect(int fd){  FILE *f;  char buf[160];  char buf1[160];  f = fdopen(fd,"a+");  if (!f) {    fprintf(stderr, "httpd: Unable to open httpd 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, "httpd: Error reading connection, error %d\n", errno);    fclose(f);    alarm(0);    return 0;  }#ifdef DEBUG  	printf("buf = '%s'\n", buf);#endif      	alarm(0);  	referrer[0] = '\0';  	content_length = -1;     	alarm(TIMEOUT);	//read other line to parse Rrferrer and content_length infomation	while (fgets(buf1, 150, f) && (strlen(buf1) > 2)) {  		alarm(TIMEOUT);		#ifdef DEBUG	    	printf("Got buf1 '%s'\n", buf1);		#endif    	if (!strncasecmp(buf1, "Referer:", 8)) {	      	char * c = buf1+8;    	  	while (isspace(*c))				c++;		    strcpy(referrer, c);    	}     	else if (!strncasecmp(buf1, "Referrer:", 9)) {      		char * c = buf1+9;     		 while (isspace(*c))				c++;      		strcpy(referrer, c);    	}     	else if (!strncasecmp(buf1, "Content-length:", 15)) {      		content_length = atoi(buf1+15);    	}   	}  	alarm(0);    	if (ferror(f)) {    	fprintf(stderr, "http: Error continuing reading connection, error %d\n", errno);	    fclose(f);    	return 0;  	}	      	ParseReq(f, buf);  	alarm(TIMEOUT);  	fflush(f);  	fclose(f);  	alarm(0);  	return 1;}void* key(void* data){	int c;	for(;;){		c=getchar();			if(c == 'q' || c == 'Q'){			KEY_QUIT=1;			exit(10);			break;		}	}		}int main(int argc, char *argv[]){  int fd, s;  int len;  volatile int true = 1;  struct sockaddr_in ec;  struct sockaddr_in server_sockaddr;	    pthread_t th_key;  void * retval;  signal(SIGCHLD, SIG_IGN);  signal(SIGPIPE, SIG_IGN);  signal(SIGALRM, sigalrm);  chroot(HTTPD_DOCUMENT_ROOT);  printf("starting httpd...\n");  printf("press q to quit.\n");//  chdir("/");  if (argc > 1 && !strcmp(argv[1], "-i")) {    /* I'm running from inetd, handle the request on stdin */    fclose(stderr);    HandleConnect(0);    exit(0);  }  if((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {    perror("Unable to obtain network");    exit(1);  }    if((setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void *)&true, 		 sizeof(true))) == -1) {    perror("setsockopt failed");    exit(1);  }  server_sockaddr.sin_family = AF_INET;  server_sockaddr.sin_port = htons(SERVER_PORT);  server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);    if(bind(s, (struct sockaddr *)&server_sockaddr, 	  sizeof(server_sockaddr)) == -1)  {    perror("Unable to bind socket");    exit(1);  }  if(listen(s, 8*3) == -1) { /* Arbitrary, 8 files/page, 3 clients */    perror("Unable to listen");    exit(4);  }     	pthread_create(&th_key, NULL, key, 0);  /* Wait until producer and consumer finish. */  printf("wait for connection.\n");	  while (1) {	      len = sizeof(ec);    if((fd = accept(s, (void *)&ec, &len)) == -1) {      exit(5);      close(s);    }    HandleConnect(fd);	  }  pthread_join(th_key, &retval);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月婷婷另类国产| 免费观看在线色综合| 日韩欧美一区电影| 成人国产精品视频| 免费欧美高清视频| 亚洲精品欧美激情| 欧美精品一区二区三区高清aⅴ | 国产乱对白刺激视频不卡 | 国产伦精一区二区三区| 亚洲午夜免费电影| 日本一区二区视频在线观看| 精品视频色一区| 91香蕉视频污在线| 国产一级精品在线| 美腿丝袜亚洲综合| 亚洲成人你懂的| 《视频一区视频二区| 久久婷婷国产综合精品青草| 欧美影院午夜播放| 91香蕉国产在线观看软件| 国产乱码精品一区二区三区忘忧草| 日韩黄色免费网站| 一区二区视频在线看| 国产精品看片你懂得 | 亚洲最新在线观看| 亚洲区小说区图片区qvod| 欧美国产成人在线| 久久久久国产精品厨房| 日韩网站在线看片你懂的| 欧美日韩色一区| 欧洲av一区二区嗯嗯嗯啊| 97精品国产露脸对白| 国产99精品在线观看| 国产成人精品网址| 国产酒店精品激情| 国产乱码精品一区二区三区忘忧草| 久久激情五月激情| 极品少妇一区二区| 激情欧美一区二区| 国内精品视频一区二区三区八戒| 蜜臀久久久99精品久久久久久| 日韩电影在线观看电影| 日本v片在线高清不卡在线观看| 亚洲高清三级视频| 亚洲va韩国va欧美va| 日韩精品电影在线观看| 美女国产一区二区| 久久福利视频一区二区| 韩国v欧美v日本v亚洲v| 国产一区二区剧情av在线| 国产乱码精品一区二区三区忘忧草| 国产精品影视网| 成人18精品视频| 日本精品一级二级| 欧美日韩免费一区二区三区| 欧美精品一二三区| 日韩久久免费av| 国产午夜一区二区三区| 亚洲色图视频免费播放| 亚洲一区二区三区四区不卡| 五月天亚洲精品| 美女在线视频一区| 国产精品中文字幕欧美| 99re8在线精品视频免费播放| 色婷婷综合激情| 91精品国产综合久久精品| 欧美成人video| 国产精品福利av| 午夜精品在线视频一区| 久久99日本精品| 成人av片在线观看| 欧美日韩成人在线| 久久尤物电影视频在线观看| 中文字幕在线观看不卡| 亚洲影院理伦片| 国产在线看一区| 色综合久久天天综合网| 制服丝袜亚洲精品中文字幕| 久久精品水蜜桃av综合天堂| 亚洲精品视频观看| 麻豆国产91在线播放| av在线不卡免费看| 91精品国产91久久久久久一区二区| 国产亚洲一区字幕| 亚洲国产精品久久不卡毛片| 国产九色sp调教91| 欧美伊人精品成人久久综合97 | 欧美激情中文字幕一区二区| 亚洲激情图片小说视频| 久久激情五月婷婷| 日本道精品一区二区三区| 欧美tk—视频vk| 一区二区三区在线播| 国产一区日韩二区欧美三区| 欧美午夜一区二区三区| 国产亚洲综合色| 日韩高清欧美激情| 色综合久久天天| 久久久综合激的五月天| 丝袜美腿一区二区三区| 99久久精品免费观看| 日韩美女视频在线| 亚洲国产精品尤物yw在线观看| 粉嫩aⅴ一区二区三区四区| 欧美精品久久99| 亚洲日本va午夜在线电影| 国产一区二区网址| 欧美一级免费大片| 亚洲一区二区在线观看视频| 大尺度一区二区| 精品动漫一区二区三区在线观看| 亚洲一区二区三区四区五区黄| 成人精品视频网站| 欧美va亚洲va香蕉在线| 午夜激情久久久| 在线观看不卡视频| 亚洲欧洲日韩在线| 丰满放荡岳乱妇91ww| 精品国产不卡一区二区三区| 亚洲成人福利片| 欧美性色综合网| 亚洲色图欧美激情| 波多野结衣在线aⅴ中文字幕不卡| 精品美女一区二区| 麻豆国产91在线播放| 欧美一区二区在线视频| 亚洲成av人在线观看| 日本道精品一区二区三区| 国产精品九色蝌蚪自拍| 成人一道本在线| 欧美激情一区二区三区四区 | 国产一区二区三区在线观看免费| 欧美日韩国产精选| 亚洲成人av一区| 欧美视频在线一区二区三区 | 亚洲欧美自拍偷拍色图| 成人免费毛片嘿嘿连载视频| 国产欧美日韩另类一区| 粉嫩嫩av羞羞动漫久久久| 国产精品久久久久久久久搜平片 | 成人自拍视频在线观看| 国产欧美日韩三区| 成人av在线电影| 中文字幕在线不卡视频| 一本一道波多野结衣一区二区 | 夜色激情一区二区| 欧美精品xxxxbbbb| 免费在线看一区| 欧美成va人片在线观看| 国产自产高清不卡| 亚洲国产精品av| 99精品久久99久久久久| 一区二区三区中文字幕在线观看| 91麻豆国产自产在线观看| 一区二区三区国产精华| 9191成人精品久久| 久久国产精品区| 中文字幕中文乱码欧美一区二区| 色婷婷久久久综合中文字幕| 午夜精品免费在线| 欧美videos大乳护士334| 国产成人小视频| 日韩理论片网站| 91精品综合久久久久久| 国产伦精品一区二区三区免费 | 奇米一区二区三区av| 久久这里只有精品视频网| 99久久精品国产一区二区三区| 亚洲一区电影777| 日韩美女视频在线| 成人的网站免费观看| 一区二区三区中文免费| 日韩一区二区麻豆国产| 国产**成人网毛片九色| 亚洲一二三级电影| 日韩美女视频在线| 97久久久精品综合88久久| 亚洲va国产va欧美va观看| 26uuu成人网一区二区三区| av中文字幕一区| 玖玖九九国产精品| 国产欧美一区二区精品性| 在线一区二区视频| 国产不卡视频在线观看| 亚洲va天堂va国产va久| 国产欧美日韩久久| 亚洲国产经典视频| 91成人免费电影| 国产福利一区二区三区视频 | 99视频精品全部免费在线| 日韩精品一二三四| 国产精品嫩草影院com| 欧美男生操女生| caoporen国产精品视频| 麻豆国产91在线播放| 亚洲国产日韩精品| 国产精品麻豆欧美日韩ww| 日韩精品一区二区三区三区免费| 在线一区二区三区四区| 国产精品亚洲第一区在线暖暖韩国 |