首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >实现WebServer

实现WebServer
EN

Stack Overflow用户
提问于 2013-10-07 09:05:26
回答 2查看 103关注 0票数 0

我正在尝试创建一个我自己的Web服务器,关于我们今天使用的Web服务器的工作有几个问题。问题如下:

  1. 在通过端口80从客户端接收HTTP请求之后,服务器是否使用相同的端口80进行响应?
  2. 如果是的话,那么当发送一个大文件时,比如MB中的图片,webserver将无法接收来自其他客户端的请求?
  3. 计算机端口是双工还是单工?(它能同时收发吗?)
  4. 如果服务器端的另一个端口用于向客户端发送响应,那么(如果使用TCP,通常使用TCP),则再次进行三次握手,这将是开销……
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-07 09:23:18

这里的http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html是关于all服务器所发生的事情的一个很好的指南,虽然它在c中,但是概念都在这里。这将解释整个客户端服务器关系以及一些实现细节。

我只需要给出一个更高级别的内容:通常情况是,当您的服务器收到一个新的请求时,它会创建一个分叉来处理它,这样您就不会被每个请求所困扰,当请求出现在子进程中时,会向它传递一个新的文件(同样,这是所有的实现细节)。

因此,您确实有一个服务器在等待请求,对于它收到的每一个请求,它都会产生一个子进程来处理这个请求。我肯定有比c语言更容易实现这些东西的语言(我过去必须同时使用一个c和java服务器来服务于任何一个),但是c真的能让你理解正在发生的事情,我打赌这就是你在这里寻找的东西。

现在有几件事需要考虑:您希望the服务器如何工作。该示例解释父进程。您想使用tcp/UDP吗?在传递有效负载的方式上存在差异。您不必在端口80上连接。这只是web的默认设置。

希望导游能帮你。

票数 1
EN

Stack Overflow用户

发布于 2013-10-07 09:13:04

  1. 是。服务器使用客户端建立的TCP连接发送响应,因此它也使用相同的端口进行响应。服务器可以使用同一个端口处理来自多个客户端的连接,因为TCP连接由(本地ip、本地端口、远程ip、远程端口)标识,因此服务器甚至可以处理来自同一客户端的多个连接,前提是源端口不同。
  2. 您可以使用不同的技术同时为多个客户端服务。其中包括

代码语言:javascript
运行
AI代码解释
复制
- using multiple processes or threads: when one is busy serving a client the others can serve other clients.
- using events: the server listens for events from the OS: when it can write a block of data to a connection it writes it, when a new client connects it accepts the connection, ...

这两种方法常常是结合在一起的。

  1. TCP连接是双工的:您可以同时发送和接收。HTTP协议基于一个简单的请求-响应模型:在任何特定时间,只有一方在“交谈”。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19230655

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文