資源簡(jiǎn)介
簡(jiǎn)易的web服務(wù)器實(shí)現(xiàn), 有httpd 服務(wù)器通過(guò)管道實(shí)現(xiàn)動(dòng)態(tài)流程. 解析協(xié)議發(fā)送響應(yīng). 并附帶一個(gè) 簡(jiǎn)易的 client.c 的測(cè)試客戶(hù)端
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
//4.0?控制臺(tái)打印錯(cuò)誤信息?fmt必須是雙引號(hào)括起來(lái)的宏
#define?CERR(fmt?...)?\
????fprintf(stderr“[%s:%s:%d][error?%d:%s]“?fmt?“\r\n“\
?????????__FILE__?__func__?__LINE__?errno?strerror(errno)##__VA_ARGS__)
//4.1?控制臺(tái)打印錯(cuò)誤信息并退出?t同樣fmt必須是?““括起來(lái)的字符串常量
#define?CERR_EXIT(fmt...)?\
CERR(fmt##__VA_ARGS__)exit(EXIT_FAILURE)
//4.3?if?的?代碼檢測(cè)
#define?IF_CHECK(code) \
if((code)?0)?\
CERR_EXIT(#code)
//待拼接的字符串
#define?_STR_HTTP_1?“GET?/index.html?HTTP/1.0\r\nUser-Agent:?Happy?is?good.\r\nHost:?127.0.0.1:“
#define?_STR_HTTP_3?“\r\nConnection:?close\r\n\r\n“
//?簡(jiǎn)單請(qǐng)求一下
int?main(int?argc?char*?argv[])
{
char?buf[1024];
int?sfd;
struct?sockaddr_in?saddr?=?{?AF_INET?};
int?len?port;
//?argc?默認(rèn)為1?第一個(gè)參數(shù)?就是?執(zhí)行程序串
if((argc?!=?2)?||?(port=atoi(argv[1]))?<=?0?)
CERR_EXIT(“Usage:?%s?[port]“?argv[0]);
//?開(kāi)始了就這
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????0??2016-03-14?20:41??重構(gòu)\
?????文件????????1650??2016-03-14?20:40??重構(gòu)\client.c
?????文件???????13006??2016-03-14?20:40??重構(gòu)\client.out
?????文件???????12536??2016-03-14?20:38??重構(gòu)\httpd.c
?????文件???????24048??2016-03-14?20:39??重構(gòu)\httpd.out
?????文件?????????110??2016-03-14?18:27??重構(gòu)\index.html
?????文件?????????121??2016-03-14?18:47??重構(gòu)\Makefile
- 上一篇:ChartCtrl
- 下一篇:mfcdll調(diào)用方法
評(píng)論
共有 條評(píng)論