Skip to content

wjcgithub/tcp_server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tcp_server

  1. server01 listen 8080 返回固定的字符串
  1. server02 listen 8080 可以解析静态的资源 html 和 图片

WEB 服务器执行的任务

1.建立连接——接受一个客户端连接
2.接收请求——从网络中读取一条 HTTP 请求报文。
3.处理请求——对请求报文进行解释,并采取行动。
4.访问资源——访问报文中指定的资源(php, html, img....)。
5.构建响应——创建带有正确首部的 HTTP 响应报文。
6.发送响应——将响应回送给客户端。
7.记录事务处理过程——将与已完成事务有关的内容记录在一个日志文件中。

WEB 服务器的几种模型

高性能的WEB服务器能够同时支持数千条连接。这些连接使得服务器可以与世界各地的客户端进行通信,每个客户端都向服务器打开了一条或多条连接。因为请求可能会在任意时刻到达,所以 WEB 服务器会不停地观察有无新的 WEB 请求。不同的 WEB 服务器模型会以不同的方式为请求服务。

1. 单线程 WEB 服务器

  1. 单线程的 WEB 服务器一次只处理一个请求,直到其完成为止。一个事务处理结束之后,才去处理下一条连接。这种结构易于实现,但在处理过程中,所有其他连接都会被忽略。这样会造成严重的性能问题,只适用于低负荷的服务器,本项目使用的是该模型。

2. 多进程及多线程 WEB 服务器

  1. 多进程和多线程 WEB 服务器用多个进程, 或更高效的线程同时对请求进行处理。 可以根据需要创建,或者预先创建一些线程 / 进程。 有些服务器会为每条连接分配一个线程 / 进程,但当服务器同时要处理成百、上千,甚至数以万计的连接时,需要的进程或线程数量可能会消耗太多的内存或系统资源。因此,很多多线程 WEB 服务器都会对线程 / 进程的最大数量进行限制。

3. 复用 I/O 的服务器

  1. 为了支持大量的连接,很多 WEB 服务器都采用了复用结构。在复用结构中,要同时监视所有连接上的活动。当连接的状态发生变化时(比如,有数据可用,或出现错误时) ,就对那条连接进行少量的处理;处理结束之后,将连接返回到开放连接列表中,等待下一次状态变化。只有在有事情可做时才会对连接进行处理;在空闲连接上等待的时候并不会绑定线程和进程。

4. 复用的多线程 WEB 服务器

  1. 有些系统会将多线程和复用功能结合在一起,以利用计算机平台上的多个 CPU。多个线程(通常是一个物理处理器)中的每一个都在观察打开的连接(或打开的连接中的一个子集) ,并对每条连接执行少量的任务。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published