一个简单HTTP服务器程序在Linux下的C实现-Read.docVIP

一个简单HTTP服务器程序在Linux下的C实现-Read.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一个简单HTTP服务器程序在Linux下的C实现-Read

一个简单HTTP服务器程序在Linux下的C实现 曹玮(3004204123) 天津大学计算机学院04级5班 实验目的: 了解套接字(socket)实现原理,阅读Linux或者FreeBSD网络部分的源程序。 在某一种平台(Linux,Unix系列或Windows系列)下进行网络客户机-服务器编程。 程序要求: 编写一个多线程服务器程序,主线程通过非80端口监听连接请求,要求server能够显示客户端请求消息的内容,如果遇到错误,server能够区分几种基本错误类型,并回应客户端相应错误信息,客户端可以用浏览器或者自己编程实现。 要求用C/C++ 实现。 程序简介: 本程序(MyServer v0.0.1)是一个在Linux RedHat 9 下开发的命令行模式程序。启动后通过配置,可监听大于1024的任意指定端口,如有浏览器或其他程序对该端口发出http 的 GET请求,则程序产生子进程通过TCP套接字向请求方发送所需文件,而主程序继续监听。当程序截获到用户发出的SIGINT信号后,程序向屏幕打出退出信息,然后自动退出。(在程序运行于前台时,可用ctrl + c; 后台运行时,可以先通过ps –ef 命令查看进程的PID,进而用kill命令将其结束。) 本程序支持传送HTML以及HTM形式的文档,以及JPEG和GIF格式的图片。在发送这些消息之前,会加上头信息。当遇到错误请求时,会给出应答(如404号错误)。 本程序的结构采用了模块形式,降低了程序的耦合性,易于维护。并且有比较好的可读性。 缺点和一些有待改进的地方:主要表现在由于是在Linux环境下编写的纯C语言程序,因而缺少一个图形用户前端,这使得操作程序比较繁琐。另一点是目前程序支持的文件格式还比较少(这是因为在程序中加了一定限制),在传输图片时,由于需要在发送前预知其大小,因而采用了将文件整体读入内存的方式,这种方式使得在处理比较大的数据时(比如大的图片),会不能成功传送。这都是亟待改进的地方。 程序原理及主要技术 这里想说的主要是多线程相应请求的技术。 在Unix/Linux 环境下,实现多线程同步有很多方式,本程序采用了最简单也最容易理解的形式,即用fork()系统调用。首先在主进程里创建套接字,并监听相应端口是否有请求,一旦发现请求,则立即用fork产生一个子进程,用来相应请求;主进程则继续监听。子进程完成发送后即退出结束。整个过程就变得十分清晰了。由于linux在处理fork的进程是采用复制资源的方式,因而套接字的共享就比较简单的得以实现了。 再有就是通过配置文件保存用户对端口号和主目录的配置信息。这个以隐藏文件出现的文件在安装程序时生成,就在默认安装路径/usr/local/bin下。它保存了上一次用户通过-c选项配置的主目录和端口号。默认情况下,端口号为8080,主目录是运行程序的当前目录(也就是说将网页文件放在这个目录下)。 程序流程图: 主要函数及功能: 请参看代码注释。 其他说明: [1].本程序在Linux Redhat 9 下编译运行成功,测试浏览器为Mozilla浏览器。 程序的二进制代码附在压缩包中,但由于Linux个发行版之间可能存在兼容性问题,因此建议在测试时,安装压缩包中提供的tar 包,具体方法见readme.html。 [2].本程序的源代码及注释和makefile文件都在包中,其中有比较详尽的英 文注释。 [3].如在测试中遇到问题,请致信amalcaowei@。

文档评论(0)

18273502 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档