用C语言实现的简单Web服务器(Linux)
转自 http://blog.chinaunix.net/uid-22568683-id-84698.html
相信大家对Apache都有所听闻,Apache是目前使用最为广泛我Web服务器。大家可以从http://news.netcraft.com/这个网站得到证实。这是腾讯的http://uptime.netcraft.com/up/graph?site=www.qq.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基本原理
关键字(Key Words):
Linux C, Web HTTP Server, Linux Socket.
-----------------------------------------------------------------------------------
下面是Mutu的第一个版本(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:
|
init_socket.h
|
init_socket.c
|
get_time.h
|
get_time.c
|
http_session.c
|
http_session.c
|
所以源文件已经打包至附件。
I)大家可以单独编译,在shell 下输入如下命令即可:
gcc -Wall init_socket.c http_session.c get_time.c webserver.c -o webserver
II)下载附件后,将Mutu_webserver_0.1_Alpha.tar.gz解压到目录下:
tar zxvf Mutu_webserver_0.1_Alpha.tar.gz
直接用附件里面的makefile文件,在shell下输入如下命令:
make
以上两种方法都可以编译生成WEB 服务器。
生成webserver后,直接在shell下输入:
./webserver即可启动WEB服务器。
那么如何访问该服务器呢?
首先你要知道运行服务器主机的IP,在服务器主机上输入如下命令(需要超级用户权限):
ifconfig
如果你的是以太网(ethernet),那么会看到这样一行
inet addr:xxx.xxx.xxx broadcast:xxx.xxx.xxx.xxx mask:255.xxx.xxx.xxx
xxx代表数字(000-255),第一个inet addr后面的数字便是你的网卡地址。
如果你是在本机进行测试,那IP地址可以直接用127.0.0.1(回环地址,localhost)
取得服务器的IP后,用你喜欢的一款浏览器便可以访问WEB SERVER的内容了。
方法为:在浏览器的地址栏内输入:
http://xxx.xxx.xxx.xxx:8080
回车,即可(xxx.xxx.xxx.xxx无刚取得的服务器IP地址,8080为预设的端口)。
附件里面提供了几个测试用的页面,大家可以使用,也可以自己写一些HTML页面然后放到WEB服务器的根目录(即webserver文件所在的目录)
|
|
注意事项:
1.如果你改变了服务器的监听端口,则地址栏中也要做相应改变,0-1023的端口需要超级用户才能开启
2.本程序仅仅提供大家参考和测试,对运行此程序所造成的一切后果请使用者自负。
3.你可以自由传播和修改该程序。
4.如果我有时间的话,在下一个版本(0.2 Beta)中会给程序适当添加注释,并修正一些bug.
5.转接请注明出处,谢谢!
注:这还只是一个Alpha版本,所以我没有给程序写太多的注释,同时该程序也有不少bug,欢迎大家下载使用,同时为诚恳的请求各位把使用过程中遇到的问题告诉我,谢谢!
本人才疏学浅,这是第一次在CU发表文章,谢谢大家都支持,错误之处难免很多,欢迎各位批评指正。
用C语言实现的简单Web服务器(Linux)相关推荐
- go语言服务器代码,Go语言开发简单web服务器
欢迎,来自IP地址为:182.103.254.107 的朋友 Go语言由于其方便的并发通信机制以及强大的网络支持,常常被用于服务器软件的开发.本文将示例使用Go语言来开发简单的Web服务器. HTTP ...
- nodejs php web,nodejs实现的简单web服务器功能示例
本文实例讲述了nodejs实现的简单web服务器功能.分享给大家供大家参考,具体如下: 前端js代码: $.ajax({ url:'http://192.168.0.114:3000',//服务器地址 ...
- Socket网络编程--简单Web服务器(6)
本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息 ...
- Poco:创建个非常简单web服务器
C++ Poco创建个非常简单web服务器,需要先安装Poco库,配置好Poco头文件和库的路径,window和Linux下都可以编译运行,运行后在浏览器上输入网址:http://127.0.0.1: ...
- web服务器 linux+apache+tomcat+mysql+jsp+php 整合安装
2019独角兽企业重金招聘Python工程师标准>>> web服务器 linux+apache+tomcat+mysql+jsp+php 整合安装 自己的安装过程,以前发表在新浪博客 ...
- JAVA个go哪个写web方便_Go语言实现的一个简单Web服务器
Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务.同时使用这个包能很简单地对Web的路由,静态文件,模版 ...
- 简单web服务器学习总结
用node.js实现简单的web服务器 http://www.cnblogs.com/loogn/p/3362475.html http模块已提供了基本功能,所以我主要解决两个问题,1是静态资源的处理 ...
- linux启动php服务_群晖docker 实现nodejs为后端的简单web服务器 并连接数据库
前情摘要:虽然群晖有web station 作为开发简单网页的服务器首选,但是web station 里面最好用的技术栈还是基于LNMP或者LAMP的php开发环境.对于学习nodejs的同学可能丈二 ...
- 一个基于webrick 的简单web服务器
使用ruby 自带的webrick 可以非常方便地实现一个web服务器. webrick.rb 基本代码如下: #!/usr/bin/env rubyrequire 'webrick'## prepa ...
最新文章
- Execution failed for task ':app:mergeDebugResources'.
- 085_html5服务器发送事件
- Java开发之掌握JSP技术
- STL源码剖析 序列式容器 deque双端队列
- tensorflow python3.6_[教程]Tensorflow + win10 + CPU + Python3.6+ 安装教程
- BUAA OO 2019 第三单元作业总结
- 【数据分析】脑图讲述数据分析方法论
- i3wm中Chrome不保存密码
- PHP 连接SQLServer的方法
- Swagger与其他API文档编写工具对比
- 产品经理的自我修养—认知模式
- Crowd Counting P2PNet 复现
- Laya 将传统的bitmap字体 转换成 Laya可以识别的字体
- 第一批阳了的中年人:卷不赢,躺不平,摆不烂
- Delphi皮肤控件分析与QQ的皮肤变色功能
- Android混合开发(二)——JSBridge传值注意点
- Docker:从入门到入门
- XSS challenges闯关笔记
- java实现文件重命名
- C++ 进程与线程---CreateProcess()函数(1)
热门文章
- CuO-SBA-15分子筛催化氧化苯甲醇制苯甲醛|单宁酸修饰磁性Fe3O4/SBA-15纳米粒子|CuO/SBA-15介孔材料催化剂
- 获得汉字首字母和拼音
- zapya_快牙(com.dewmobile.kuaiya) - 5.9.7 (CN) - 应用 - 酷安网
- [ODBC Driver 18 for SQL Server]SSL 提供程序: 证书链是由不受信任的颁发机构颁发的
- 自制舵机(伺服电机)控制系统的一点感想
- 如何以编程方式执行Unwind segue?
- 分享4个自媒体热门领域,选对了收入翻3倍
- 招人!!!招人!!!
- 第六章——图(1)——图的基本概念
- 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。