webserver – 开发Web服务器的技巧

webserver – 开发Web服务器的技巧,第1张

概述在这里做了一些搜索后,我发现没有关于开发Web服务器的问题. 我主要是因为两个原因而这样做.作为一个侧面项目,并了解有关开发服务器程序的更多信息.这不会变成一个可用的应用程序,更像是一个学习工具 所以问题很简单. >您开发了Web服务器吗? (不管用什么语言) >你可以提供什么问题和其他好的技巧 欢迎链接到有用的网站,但不要链接到开源的工作项目,因为这是关于学习的过程. Web服务器最初只是一段非 在这里做了一些搜索后,我发现没有关于开发Web服务器的问题.

我主要是因为两个原因而这样做.作为一个侧面项目,并了解有关开发服务器程序的更多信息.这不会变成一个可用的应用程序,更像是一个学习工具

所以问题很简单.

>您开发了Web服务器吗? (不管用什么语言)
>你可以提供什么问题和其他好的技巧

欢迎链接到有用的网站,但不要链接到开源的工作项目,因为这是关于学习的过程.

解决方法 Web服务器最初只是一段非常简单的代码:

>在端口80上打开TCP / IP套接字
>虽然没有终止

>等待该套接字上的连接
>当有人向您发送http标头时

>找到文件的路径
>将文件复制到套接字

所以代码的轮廓很简单.

现在,您需要处理一些复杂问题:

>在最简单的代码版本中,当您与一个浏览器通话时,其他所有浏览器都无法连接.您需要提出一些处理多个连接的方法.
>通常可以方便地发送除静态文件之外的东西(尽管第一个http服务器就是这样做的),因此您需要能够运行其他程序.

处理多个连接的可能性也相对容易,有许多可能的选择.

>最简单的版本(再次,这是它最初的方式)是让侦听端口80的代码为该连接设置一个特定的套接字,然后分叉自己的副本来处理那个连接.该过程一直运行直到套接字关闭,然后终止.然而,这是相对昂贵的:一般来说,fork需要几十毫秒,因此限制了你运行的速度.
>第二种选择是创建一个轻量级进程 – 一个/ k /一个线程 – 来处理请求.

运行程序实际上也很容易.通常,您定义CGI目录的特殊路径;具有通过该目录的路径的URL然后将路径名称解释为程序的路径.然后,服务器将使用fork / exec创建子进程,并将STDOUT连接到套接字.然后程序运行,将输出发送到STDOUT,然后将其发送到客户端浏览器.

这是基本模式; Web服务器所做的一切只是为这个基本模式添加了多余的功能和附加功能.

以下是一些代码示例的其他来源:

> http://www.codeproject.com/KB/IP/Generic_TCP_IP_server.aspx
> http://cs.baylor.edu/~donahoo/practical/CSockets/textcode.html
> http://www.paulgriffiths.net/program/c/echoserv.php
> http://www.linuxhowtos.org/C_C++/socket.htm

它几乎没有你真正想要的东西,但简单来说,很难从http://www.commandlinefu.com击败this one:

$python -m SimplehttpServer

总结

以上是内存溢出为你收集整理的webserver – 开发Web服务器的技巧全部内容,希望文章能够帮你解决webserver – 开发Web服务器的技巧所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存