c语言服务器制作,C语言写的简易实用的web服务器

本文介绍了一位程序员在无法理解Apache复杂源码的情况下,决定动手编写一个简易且实用的C语言Web服务器。该服务器运行在Red Hat Enterprise Linux 5上,实现了基本功能,包括初始化、接收连接、处理HTTP会话等。提供了源代码供读者参考学习。
摘要由CSDN通过智能技术生成

码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210、210既

210

之意。

Apache在码农界是比较知名的,它也是目前最接地气、使用最广泛的Web服务器。大家可以从news.netcraft.com/这个网站得到证实。

Apache在功能、效率、开源三个方面对我很有吸引力,但囿于自己的技术水平,无法从Apache庞大的source code里面理清头绪。

懒惰中,冒出自己动手写一个简易实用的Web服务器的主意,在此分享给大家,权当抛砖引玉!

我的实验环境为:

OS: Red Hat Enterprise Linux 5

gcc: 4.1.2

libc: 2.5

editor: Vim

lang: C

阅读该源代码需要以下预备知识:

C语言基础

Linux编程基础

socket编程基础(Linux)

TCP/IP基本原理

HTTP基本原理

下面是第一个版本(0.1 Alpha),实现了WEB 服务器的最基本功能 ,包括以下源文件:

webserver.c----程序入口

init_socket.h

init_socket.c----完成一些WEB服务器的初始化工作

get_time.h get_time.c----获得服务器的时间

http_session.h http_session.c----处理一次HTTP会话

以下是各文件源码:

webserver.c/*

* file:webserver.c

*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include"get_time.h"

#include"init_socket.h"

#include"http_session.h"

intmain(intargc,char*argv[])

{

intlisten_fd;

intconnect_fd;

structsockaddr_inserver_addr;

structsockaddr_inclient_addr;

bzero(&server_addr,sizeof(structsockaddr_in));

bzero(&client_addr,sizeof(structsockaddr_in));

if(init_socket(&listen_fd,&server_addr)==-1)

{

perror("init_socket() error. in webserver.c");

exit(EXIT_FAILURE);

}

socklen_taddrlen=sizeof(structsocka

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值