91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2022-09-20
  • 語言: 其他
  • 標簽: c??web??服務器??

資源簡介

基于linux通過c實現web服務器,適合新手 學習了知識點,然后通過項目鞏固一下知識點,也可以了解http協議。

資源截圖

代碼片段和文件信息

/*?J.?David‘s?webserver?*/
/*?This?is?a?simple?webserver.
?*?Created?November?1999?by?J.?David?Blackstone.
?*?CSE?4344?(Network?concepts)?Prof.?Zeigler
?*?University?of?Texas?at?Arlington
?*/
/*?This?program?compiles?for?Sparc?Solaris?2.6.
?*?To?compile?for?Linux:
?*??1)?Comment?out?the?#include??line.
?*??2)?Comment?out?the?line?that?defines?the?variable?newthread.
?*??3)?Comment?out?the?two?lines?that?run?pthread_create().
?*??4)?Uncomment?the?line?that?runs?accept_request().
?*??5)?Remove?-lsocket?from?the?Makefile.
?*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#define?ISspace(x)?isspace((int)(x))

#define?SERVER_STRING?“Server:?jdbhttpd/0.1.0\r\n“

void?accept_request(int);
void?bad_request(int);
void?cat(int?FILE?*);
void?cannot_execute(int);
void?error_die(const?char?*);
void?execute_cgi(int?const?char?*?const?char?*?const?char?*);
int?get_line(int?char?*?int);
void?headers(int?const?char?*);
void?not_found(int);
void?serve_file(int?const?char?*);
int?startup(u_short?*);
void?unimplemented(int);

/**********************************************************************/
/*?A?request?has?caused?a?call?to?accept()?on?the?server?port?to
?*?return.??Process?the?request?appropriately.
?*?Parameters:?the?socket?connected?to?the?client?*/
/**********************************************************************/
void?accept_request(int?client)
{
?char?buf[1024];
?int?numchars;
?char?method[255];
?char?url[255];
?char?path[512];
?size_t?i?j;
?struct?stat?st;
?int?cgi?=?0;??????/*?becomes?true?if?server?decides?this?is?a?CGI
????????????????????*?program?*/
?char?*query_string?=?NULL;

?numchars?=?get_line(client?buf?sizeof(buf));
?i?=?0;?j?=?0;
?while?(!ISspace(buf[j])?&&?(i??{
??method[i]?=?buf[j];
??i++;?j++;
?}
?method[i]?=?‘\0‘;

?if?(strcasecmp(method?“GET“)?&&?strcasecmp(method?“POST“))
?{
??unimplemented(client);
??return;
?}

?if?(strcasecmp(method?“POST“)?==?0)
??cgi?=?1;

?i?=?0;
?while?(ISspace(buf[j])?&&?(j???j++;
?while?(!ISspace(buf[j])?&&?(i??{
??url[i]?=?buf[j];
??i++;?j++;
?}
?url[i]?=?‘\0‘;

?if?(strcasecmp(method?“GET“)?==?0)
?{
??query_string?=?url;
??while?((*query_string?!=?‘?‘)?&&?(*query_string?!=?‘\0‘))
???query_string++;
??if?(*query_string?==?‘?‘)
??{
???cgi?=?1;
???*query_string?=?‘\0‘;
???query_string++;
??}
?}

?sprintf(path?“htdocs%s“?url);
?if?(path[strlen(path)?-?1]?==?‘/‘)
??strcat(path?“index.html“);
?if?(stat(path?&st)?==?-1)?{
??while?((numchars?>?0)?&&?strcmp(“\n“?buf))??/*?read?&?discard?headers?*/
???numchars?=?get_line(client?buf?sizeof(buf));
??not_found(client);
?}
?else
?{
??if?((st.st_mode?&?S_IFMT)?==?S_IFDIR)
???strcat(path?“/index.html“);
??if?((st.st_mode?&?S

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-08-14?23:20??http服務器\
?????目錄???????????0??2017-08-14?23:20??http服務器\htdocs\
?????文件?????????479??2017-08-14?23:20??http服務器\htdocs\check.cgi
?????文件?????????320??2017-08-14?23:20??http服務器\htdocs\color.cgi
?????文件?????????218??2017-08-14?23:20??http服務器\htdocs\index.html
?????文件?????????308??2017-08-14?23:20??http服務器\htdocs\README
?????文件???????14537??2017-08-14?23:20??http服務器\httpd.c
?????文件??????????95??2017-08-14?23:20??http服務器\Makefile
?????文件????????1904??2017-08-14?23:20??http服務器\README
?????文件?????????673??2017-08-14?23:20??http服務器\simpleclient.c

評論

共有 條評論