資源簡介
簡易的web服務器實現, 有httpd 服務器通過管道實現動態流程. 解析協議發送響應. 并附帶一個 簡易的 client.c 的測試客戶端
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
//4.0?控制臺打印錯誤信息?fmt必須是雙引號括起來的宏
#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同樣fmt必須是?““括起來的字符串常量
#define?CERR_EXIT(fmt...)?\
CERR(fmt##__VA_ARGS__)exit(EXIT_FAILURE)
//4.3?if?的?代碼檢測
#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“
//?簡單請求一下
int?main(int?argc?char*?argv[])
{
char?buf[1024];
int?sfd;
struct?sockaddr_in?saddr?=?{?AF_INET?};
int?len?port;
//?argc?默認為1?第一個參數?就是?執行程序串
if((argc?!=?2)?||?(port=atoi(argv[1]))?<=?0?)
CERR_EXIT(“Usage:?%s?[port]“?argv[0]);
//?開始了就這
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-03-14?20:41??重構\
?????文件????????1650??2016-03-14?20:40??重構\client.c
?????文件???????13006??2016-03-14?20:40??重構\client.out
?????文件???????12536??2016-03-14?20:38??重構\httpd.c
?????文件???????24048??2016-03-14?20:39??重構\httpd.out
?????文件?????????110??2016-03-14?18:27??重構\index.html
?????文件?????????121??2016-03-14?18:47??重構\Makefile
- 上一篇:ChartCtrl
- 下一篇:mfcdll調用方法
評論
共有 條評論