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

网站建设哪家不错领地免费网站

网站建设哪家不错,领地免费网站,电商网站开发人员结构,杭州网站关键词推广文章目录 一、Motivation二、SolutionsS1 - Writing webgetS2 - An in-memory reliable byte stream 三、Results四、Source 一、Motivation 第一个小测试 webget 是想让我们体验并模拟一下在浏览器中键入 URL 后获得远程服务器传来的内容#xff0c;这并没有太大的难度… 文章目录 一、Motivation二、SolutionsS1 - Writing webgetS2 - An in-memory reliable byte stream 三、Results四、Source 一、Motivation 第一个小测试 webget 是想让我们体验并模拟一下在浏览器中键入 URL 后获得远程服务器传来的内容这并没有太大的难度因为 Lab 本身已经为我们搭建好了 TCP/IP 五层协议栈的框架我们要做的仅仅是解析传入的 host 和 path 即可具体完善在 apps/webget.cc 的 get_URL() 中 第二个基本组件也比较简单是想让我们实现一个最基本且最常用的字节流可以将其理解成是一个队列可以从头部读出数据也可以从末端写入数据。同样大体的框架 Lab 已经实现好了只需要我们在 libsponge/byte_stream.cc 中完善其各功能即可 二、Solutions S1 - Writing webget 针对第一个测试点 webget应该在 apps/webget.cc 中完善具体的 get_URL() 即可 void get_URL(const string host, const string path) {TCPSocket sock;sock.connect(Address(host, http));sock.write(GET path HTTP/1.1\r\nHost: host \r\nConnection: close\r\n\r\n);sock.shutdown(SHUT_WR);while (!sock.eof())cout sock.read();sock.close(); }首先进入函数内不管三七二十一先建 socket然后尝试与目标 web 主机建立 TCP 连接。成功后透过 write 将获取 URL 内容的请求发送给服务器。发送完成之后关闭 socket 写的 Channel意味着不能再向该 socket 当中写数据了或许只能读 之后就是等待 web 主机回复。通过eof判断可读的 Channel 内是否有数据送来送来一份读一份直到读完为止 S2 - An in-memory reliable byte stream 针对第二个测试点稍微复杂一点要修改 libsponge/byte_stream.h 和 libsponge/byte_stream.cc 的内容让其支持一个队列的功能 对于 writer主要就是能够写入数据并且自知状态包括队列的剩余容量及 Channel 是否已被关闭。在这里我选用 deque 双端对列作为 ByteStream 的底层数据结构来研究一下 write() size_t ByteStream::write(const string data) {size_t len data.length();/* 有多少容量写多少数据 */if(remaining_capacity() data.length())len remaining_capacity();for(size_t i0; ilen; i)buf_.push_back(data[i]);nwrite_ len;return len; }首先要透过 remaining_capacity() 看一下当前对列还能不能容下将要写入的数据其定义如下 size_t ByteStream::remaining_capacity() const { return cap_ - buf_.size(); }我们在此采用的是有多少容量就写多少数据的策略而不是 0 或 1 的策略非写即丢。定义了 nwrite_ 计数了一次 write 写了多少数据。end_input() 较为简单只分辨是否还有字节将要写入其定义如下 void ByteStream::end_input() {ended_ true; }关于读操作Lab0 的文档是这样规范的 第一个 peek_output() 主要用来查看队首元素定义如下 string ByteStream::peek_output(const size_t len) const {if(len buf_.size())return ;return string(buf_.begin(), buf_.begin()len); }pop_output() 和查看队首的功能差不多只是将查看功能改为删除 void ByteStream::pop_output(const size_t len) { if(len buf_.size())return;for(size_t i0; ilen; i)buf_.pop_front();nread_ len; }其中的 nread_ 和 nwrite_ 一样用来统计 reader 已经读取了多少数据。read() 是框架定义好的如下 std::string read(const size_t len) {const auto ret peek_output(len);pop_output(len);return ret; }之后的一系列状态返回函数我不一一展开了无非就是封装一下成员变量对外提供状态查看功能罢了 三、Results 根据文档在 sponge 目录下新建 build 文件夹然后在 build 里透过 cmake .. 初始化编译环境接着透过 make -j4 进行编译 完成编译之后可以透过 make check_webget 和 make check_lab0 来检验自己程序的正确性 四、Source 【计算机网络】Stanford CS144 学习笔记[CS144] Lab 0: networking warmup【斯坦福计网CS144项目】环境配置 Lab0: ByteStream
http://www.tj-hxxt.cn/news/227841.html

相关文章:

  • 网站建设实验代码商城网站设计服务商
  • 商城网站设计配色思想旅游网站开发实现开题报告
  • pc端网站开发淄博企业网站建设公司
  • 网站建设选择数据库网页游戏广告平台网站建设
  • 北京 网站开发 大兴网站视频超链接怎么做
  • 北京建设监理协会官方网站响应式网站 产品轮播代码
  • 西安app网站开发太原百度网站建设
  • 长沙个人做网站排名网站建设怎么进行一级域名申请
  • 石家庄网站建设公司哪家好做管理信息的网站
  • 网站建设与管理题目青岛做网站皆赴青岛博采网络
  • 学校网站模板htmlwordpress数据库名
  • 网站cms是什么意思小说网站开发的看书软件
  • 外贸网站建设定制开发东莞网络网站建设
  • 移动网站开发源代码广告资源网
  • 怎么对网站的数据库做管理wordpress修改成中文字体
  • 制造网站建设wordpress文件权限设置
  • a站是什么帝国cms怎么做网站声明
  • 网站建站服务公司无锡企业网站制作哪家比较好
  • 深圳商城网站建设网站运营方案ppt
  • 建设一个网站需要哪些方面的开支大型网站建设兴田德润实惠
  • 九江的网站建设公司百度微信网站
  • 江苏网站建设哪家好推荐优秀的企业网站设计
  • 外贸平台哪个网站最好浙江网站建设情况
  • 网站前台图片设置二手设备回收做哪个网站好
  • 营销网站建设有哪些公司网络服务电话
  • 我要找个做网站的公司学做网站要学多久
  • 做设计.不抠图网站产品结构设计
  • 做设计素材网站有哪些网址导航网站怎样做
  • 网站app充值记账凭证怎么做工程建筑公司网站
  • 自己注册一个网站要多少钱编程入门教学