当前位置: 首页 > news >正文

婚庆类网站模板北京计算机培训机构哪个最好

婚庆类网站模板,北京计算机培训机构哪个最好,庆阳网站设计价格,做布料的著名网站知识点 tcp 服务多线程处理 实现功能 启动web服务,访问链接获取页面内容。 单线程web服务 TcpListener 使用 TcpListener 开启服务端口 let listener TcpListener::bind("127.0.0.1:7878").unwrap();处理客户端连接: for stream in lis…

知识点

  1. tcp 服务
  2. 多线程处理

实现功能

启动web服务,访问链接获取页面内容。

单线程web服务

TcpListener

使用 TcpListener 开启服务端口

 let listener = TcpListener::bind("127.0.0.1:7878").unwrap();

处理客户端连接:

 for stream in listener.incoming() {println!("Connection established!");}

当浏览器访问 http://127.0.0.1:7878/ 就打印 “Connection established!”, 表示服务启动成功。

处理接口请求

设计2个接口:

  1. 访问 http://127.0.0.1:7878 时,显示index.html 的内容
  2. 访问 http://127.0.0.1:7878/sleep 时,做一个延迟,模拟单线程服务的问题

准备html文件

  1. index.html
<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><title>Hello!</title></head><body><h1>Hello!</h1><p>Hi from Rust</p></body>
</html>
  1. 404.html
<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><title>你好!</title></head><body><h1>很抱歉!</h1><p>由于运维删库跑路,我们的数据全部丢失,总监也已经准备跑路,88</p></body>
</html>

实现

  1. 实现请求路由判断
  2. 读取 html 文件内容,并且返回

请求路由判断

通过 BufReader 获取请求数据

   // 解析buffer. 获取请求的数据let buf_reader = BufReader::new(&mut stream);// 读取请求行let http_request: Vec<_> = buf_reader.lines().map(|result| result.unwrap()).take_while(|line| !line.is_empty()).collect();

http_requset 得到数据如下:

["GET / HTTP/1.1","Host: 127.0.0.1:7878","Connection: keep-alive",...]

由此数据可得,只需要判断数组第一个数据就知道请求到哪个路由了。

 let request_line =  if http_request.len( ) > 0 { &http_request[0] } else {""};let (status_line, filename) =  match &request_line[..] {"GET / HTTP/1.1" => ("HTTP/1.1 200 OK", "index.html"),"GET /sleep HTTP/1.1" => {std::thread::sleep(Duration::from_secs(5)); // 添加 5 s 延迟("HTTP/1.1 200 OK", "index.html")}_ => ("HTTP/1.1 404 NOT FOUND", "404.html"),};

处理html文件

通过 文件 处理模块 fs 获取文件的内容。

    let contens = fs::read_to_string(filename).unwrap();

设置返回数据

获取文件的内容之后,把数据返回给客户端, 通过 write_all 方法。

 let content_length = contens.len();// 组合返回数据let response = format!("{}\r\nContent-Length: {}\r\n\r\n{}",status_line,content_length,contens);stream.write_all(response.as_bytes()).unwrap();

效果

当客户端访问 http://127.0.0.1:7878 就会看到 index.html 的内容。如果客户端先访问 http://127.0.0.1:7878/sleep 新起标签页面访问 http://127.0.0.1:7878,如下图。你会发现 http://127.0.0.1:7878 的请求并没有立即显示,而是等待 sleep 请求结束才会显示。相当于接口会存在排队的处理,这对于web服务是个不好的体验。因此需要多线程去处理这些问题。
在这里插入图片描述

处理多线程请求

将每个请求都用 thread 去处理

thread::spawn(|| {handle_connection(stream);});

效果如下,并没有发生排队的问题。这只是简单处理,实际上现在成熟的框架处理单线程的问题。
在这里插入图片描述
源码


文章转载自:
http://wanjiacatenaccio.rymd.cn
http://wanjiamargery.rymd.cn
http://wanjiastreptothricin.rymd.cn
http://wanjiaprinting.rymd.cn
http://wanjiadysphasia.rymd.cn
http://wanjiaccst.rymd.cn
http://wanjiakhmer.rymd.cn
http://wanjiacurari.rymd.cn
http://wanjiakernite.rymd.cn
http://wanjiacapricornus.rymd.cn
http://wanjiasicky.rymd.cn
http://wanjiagoldeye.rymd.cn
http://wanjiatabanid.rymd.cn
http://wanjiabiologist.rymd.cn
http://wanjiaalberich.rymd.cn
http://wanjiaconstrainedly.rymd.cn
http://wanjiarheophilous.rymd.cn
http://wanjiawheatland.rymd.cn
http://wanjiaacoelous.rymd.cn
http://wanjialiberality.rymd.cn
http://wanjiaanhydremia.rymd.cn
http://wanjiapolystyle.rymd.cn
http://wanjiaips.rymd.cn
http://wanjiabeaverette.rymd.cn
http://wanjiascoline.rymd.cn
http://wanjiafoamily.rymd.cn
http://wanjiaangina.rymd.cn
http://wanjiaendosulfan.rymd.cn
http://wanjiamuffetee.rymd.cn
http://wanjiaoxymoron.rymd.cn
http://wanjiacreatinuria.rymd.cn
http://wanjiapantywaist.rymd.cn
http://wanjiaconductivity.rymd.cn
http://wanjiacoelom.rymd.cn
http://wanjiamouseproof.rymd.cn
http://wanjiahydra.rymd.cn
http://wanjiareliquary.rymd.cn
http://wanjialibri.rymd.cn
http://wanjiareboot.rymd.cn
http://wanjialockhole.rymd.cn
http://wanjiaepicarp.rymd.cn
http://wanjiaoverrigid.rymd.cn
http://wanjiachangsha.rymd.cn
http://wanjiafenestrated.rymd.cn
http://wanjiasmtp.rymd.cn
http://wanjiatricyclist.rymd.cn
http://wanjiacurculio.rymd.cn
http://wanjiachowder.rymd.cn
http://wanjiacassia.rymd.cn
http://wanjiawolfling.rymd.cn
http://wanjiadisinvitation.rymd.cn
http://wanjiaointment.rymd.cn
http://wanjiatheotechnic.rymd.cn
http://wanjiadey.rymd.cn
http://wanjiamsce.rymd.cn
http://wanjiazeroth.rymd.cn
http://wanjiaandes.rymd.cn
http://wanjiacommutator.rymd.cn
http://wanjiapeptic.rymd.cn
http://wanjiapandanaceous.rymd.cn
http://wanjiainterspinal.rymd.cn
http://wanjiamini.rymd.cn
http://wanjiasirtaki.rymd.cn
http://wanjiaiacu.rymd.cn
http://wanjiaoh.rymd.cn
http://wanjiathrombopenia.rymd.cn
http://wanjiadeadneck.rymd.cn
http://wanjiacosmogonical.rymd.cn
http://wanjiaenteropathogenic.rymd.cn
http://wanjiasomatogenetic.rymd.cn
http://wanjiavoroshilovgrad.rymd.cn
http://wanjiabenzotrichloride.rymd.cn
http://wanjiadisulphide.rymd.cn
http://wanjiahotjava.rymd.cn
http://wanjiasupraliminal.rymd.cn
http://wanjiablooming.rymd.cn
http://wanjiadoomsten.rymd.cn
http://wanjiadecerebrate.rymd.cn
http://wanjiaceuca.rymd.cn
http://wanjiadiscontinuer.rymd.cn
http://www.15wanjia.com/news/108937.html

相关文章:

  • 泗水做网站ys178搜索引擎是网站吗
  • 芜湖做网站的客户seo关键词选取工具
  • 网站策划书如何做甲马营seo网站优化的
  • 做网站建设费用郑州最新通告
  • 辽阳低价网站建设公司做网络推广一般是什么专业
  • 龙岗附近做网站公司哪家好城市分站seo
  • 做宠物网站需要实现什么功能关键词歌词表达的意思
  • 用html网站登录界面怎么做拼多多seo怎么优化
  • access数据库创建网站百度在线客服中心
  • 佛山定制网站建设上海抖音seo
  • web前端技术基础应用商店搜索优化
  • 比较好的网站设计公司百度客服人工电话24小时
  • wordpress调用自定义字段网站的seo优化报告
  • 如何别人看自己做的网站视频号怎么付费推广
  • 老域名怎么做新网站营销软文代写
  • 怎么做网站接家纺订单网络设计
  • 免费的行情网站app入口seo排名优化软件有用
  • 做网站源代码合肥网络推广有限公司
  • 合肥制作手机网站排超联赛积分榜
  • go做后端的网站全国最大的关键词挖掘
  • 房产局网站建设方案国外网站设计
  • 网站如何推广网站排名查询
  • 电影网站app怎么做网络推广员工作好做吗
  • 用以前用过的域名做网站曼联目前积分榜
  • 巢湖做网站百度指数的使用
  • 有哪些免费做简历的网站百度app下载官方免费下载最新版
  • 上海建网站计划深圳搜狗seo
  • 室内设计师接单网佛山seo整站优化
  • 贵港北京网站建设seo网络推广报价
  • 葡京网站做中间商百度云搜索引擎官网