我正在研究在Linux平台上开发一个小的(读取:基本的)Web服务器,我不知道从哪里开始。
我希望能够做到的是:
听一个特定的端口
采取HTTP发布并获取请求
适当的回应
不需要会话pipe理
必须使用C或C ++
必须在启动时作为服务运行
我熟悉HTTP标头,并且是一位经验丰富的PHP和.Net Web开发人员,但我不确定从哪里开始执行此任务。
你能否给我提供一些资源来弥合学习曲线?
如何将窗口放在通过CreateProcess创build的进程之上
我们是否应该使用多个接受者套接字来接受大量的连接?
Monitor类如何实现?
为什么AssignProcesstoJobObject在XP上失败,出现Access Denied错误?
Windows和Linux上dynamic库的C ++标准
pthread_join破坏堆栈中的pthread_create参数
完全透明的c ++窗口,但仍然阅读文本为例
Win32API:如何确定EN_CHANGE是因为用户操作,而不是软件操作?
如何在Windows中的C / C + +实现hello世界共享内存?
我需要查看哪些API来编写自己的Windows驱动器盘符
从上到下,您需要了解:
HTTP协议
TCP服务器 – BSD套接字编程
编写一个基本的Unix守护进程(持久服务)
进程管理(fork)
解析文本(读取配置文本文件)
文件处理(I / O)
调试C / C ++编程:)
所以你将不得不学习编写一个基本的Unix应用程序,用于TCP / IP网络编程的BSD套接字编程,以及HTTP协议。
常用的文本包括:
Unix应用程序开发:
Unix环境下的高级编程Stevens&Rago
高级Unix编程
TCP / IP(套接字)编程:
Unix网络编程,第1卷Stevens等
TCP / IP画报,史蒂文斯
使用TCP / IP进行网际互联,第3卷,Comer
HTTP协议
RFC包括
用于HTTP v1.1的RFC 2616 ,
适用于v1.1之前的RFC 2068
对于一个SIMPLE / BASIC / ULTRA-LIGHT HTTP服务器,程序流应该是这样的(用伪代码):
----Main thread---- Load settings while true do Wait for connection Connection received,create a new thread and transfer this connection to this thread. end ----Connection thread---- Analyze request if dynamic content do Dump the HTTP request and send it to the interpreter Wait for response from the interpreter Read response header from the interpreter Stream response else if static content do Load requested file Stream file content end (Optional) Cache the response if size < X Send the response Close the socket
所以你应该学习线程,进程间通信(如果你想与解释器交互),Socket编程和HTTP协议。
所有细节都不能在这里解释
访问http://www.linuxhowtos.org/C_C++/socket.htm用C创建一个基本的服务器。
另一个由IBM: http : //www.ibm.com/developerworks/systems/library/es-nweb/index.html
你总是可以从现有的代码库开始。 博阿可能是一个开始,因为它是小的,在C实施,适合您的“开机启动”的要求; 详细信息例如在Debian / Ubuntu软件包中。
http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers
再次感谢您的维基百科
顺便说一句 – 你可能要Google“嵌入式Web服务器开源”
(WWW).ibm.com / developerworks的/网络/库/ WA-ltwebserv /
借助libevent库,您可以用40行c代码编写Web服务器。
http://www.ruilog.com/article/view/5249.html
如果你想从头开始创建它,那么你可以参考用lighttpd,apache,Nginx等c语言编写的开源webserver。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。