一个简单http服务器程序在linux下的c实现

一个简单http服务器程序在linux下的c实现

ID:8804811

大小:118.00 KB

页数:3页

时间:2018-04-08

一个简单http服务器程序在linux下的c实现_第1页
一个简单http服务器程序在linux下的c实现_第2页
一个简单http服务器程序在linux下的c实现_第3页
资源描述:

《一个简单http服务器程序在linux下的c实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一个简单HTTP服务器程序在Linux下的C实现曹玮(3004204123)天津大学计算机学院04级5班1.实验目的:·了解套接字(socket)实现原理,阅读Linux或者FreeBSD网络部分的源程序。·在某一种平台(Linux,Unix系列或Windows系列)下进行网络客户机-服务器编程。2.程序要求:编写一个多线程服务器程序,主线程通过非80端口监听连接请求,要求server能够显示客户端请求消息的内容,如果遇到错误,server能够区分几种基本错误类型,并回应客户端相应错误信息,客户端可以用浏览器或者自己编程实现。要求用C/C++实现。3.程序简介:本程序(MyServerv0.

2、0.1)是一个在LinuxRedHat9下开发的命令行模式程序。启动后通过配置,可监听大于1024的任意指定端口,如有浏览器或其他程序对该端口发出http的GET请求,则程序产生子进程通过TCP套接字向请求方发送所需文件,而主程序继续监听。当程序截获到用户发出的SIGINT信号后,程序向屏幕打出退出信息,然后自动退出。(在程序运行于前台时,可用ctrl+c;后台运行时,可以先通过ps–ef命令查看进程的PID,进而用kill命令将其结束。)本程序支持传送HTML以及HTM形式的文档,以及JPEG和GIF格式的图片。在发送这些消息之前,会加上头信息。当遇到错误请求时,会给出应答(如404号错误

3、)。本程序的结构采用了模块形式,降低了程序的耦合性,易于维护。并且有比较好的可读性。缺点和一些有待改进的地方:主要表现在由于是在Linux环境下编写的纯C语言程序,因而缺少一个图形用户前端,这使得操作程序比较繁琐。另一点是目前程序支持的文件格式还比较少(这是因为在程序中加了一定限制),在传输图片时,由于需要在发送前预知其大小,因而采用了将文件整体读入内存的方式,这种方式使得在处理比较大的数据时(比如大的图片),会不能成功传送。这都是亟待改进的地方。1.程序原理及主要技术这里想说的主要是多线程相应请求的技术。在Unix/Linux环境下,实现多线程同步有很多方式,本程序采用了最简单也最容易理解

4、的形式,即用fork()系统调用。首先在主进程里创建套接字,并监听相应端口是否有请求,一旦发现请求,则立即用fork产生一个子进程,用来相应请求;主进程则继续监听。子进程完成发送后即退出结束。整个过程就变得十分清晰了。由于linux在处理fork的进程是采用复制资源的方式,因而套接字的共享就比较简单的得以实现了。再有就是通过配置文件保存用户对端口号和主目录的配置信息。这个以隐藏文件出现的文件在安装程序时生成,就在默认安装路径/usr/local/bin下。它保存了上一次用户通过-c选项配置的主目录和端口号。默认情况下,端口号为8080,主目录是运行程序的当前目录(也就是说将网页文件放在这个目

5、录下)。2.程序流程图:1.主要函数及功能:请参看代码注释。2.其他说明:[1].本程序在LinuxRedhat9下编译运行成功,测试浏览器为Mozilla浏览器。程序的二进制代码附在压缩包中,但由于Linux个发行版之间可能存在兼容性问题,因此建议在测试时,安装压缩包中提供的tar包,具体方法见readme.html。[2].本程序的源代码及注释和makefile文件都在包中,其中有比较详尽的英文注释。[3].如在测试中遇到问题,请致信amalcaowei@gmail.com。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。