最新要闻
- 天天观点:NVIDIA御用游戏《赛博朋克2077》终于支持DLSS 3:性能暴涨3.9倍!
- 天天热推荐:机械硬盘:彻底陨落
- 天天热头条丨地球最黑暗的时刻:被狂轰滥炸长达2000万年
- 信息:游客岳飞观高喊“还我河山” 砸打秦桧像:景区已报警
- 焦点热文:丰田章男:一年卖出1049万辆汽车!却败给了电动车
- 环球快报:特斯拉2022年在华营收181.45亿美元:占比降至约22%
- 天天微动态丨千呼万唤始出来 《赛博朋克2077》正式支持DLSS3
- 神十五乘组太空过春节!这一看就是咱中国的空间站:红红火火
- 直播:5万年一遇绿色彗星逼近地球 肉眼可见
- 世界焦点!河南矿山开工招聘电话被打爆:因6100万奖金火出圈
- 天天热议:对不起!《狂飙》反派集体直播“道歉”:阵势让网友欢呼太上头
- 观热点:日本厂商2023年推出新款磁带收音机:支持U盘数据转录
- 天天日报丨戴尔灵越Pro 2023系列上架:13代酷睿P系 5999元起
- 天天观焦点:女子有洁癖:每天消杀双手10次 结果患乏脂性皮炎
- 最新快讯!彻底消灭自燃!宝马今年开始测试固态电池:计划两年后装车
- 世界信息:情人节倒计时 国外动物园想出报复前任的绝妙点子:蟑螂惨了
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【计算机网络】Stanford CS144 Lab0 : networking warmup 学习记录
CS144 官方镜像 : https://cs144.github.io/kangyupl备份的镜像 : https://kangyupl.gitee.io/cs144.github.io/
(资料图)
实验准备
- Ubuntu 18.04.6 LTS x86_64 (实验提供)
- gcc8 或 clang6 (实验机提供的gcc是7.5, 没有达到实验文档要求)
Writing webget
要求使用 TCPSocket
和 Address
来抓取网页内容。
TCP 套接字编程,实验已经使用 C++ 封装好了 TCPSocket
。
建立 TCPSocket
, 并向目标主机的 80
号端口建立 TCP 连接。
发送 HTTP 请求报文。
HTTP 报文格式
GET /somedir/page.html HTTP/1.1\r\nHost: www.someschool.edu\r\nConnection: close\r\nUser-agent: Mozilla/5.0\r\nAccept-language: fr\r\n\r\n
发送完报文,使用 shutdown(SHUT_WR)
表示请求发送完了。
之后使用 read()
读取目标主机返回的报文即可。
TCPSocket sock{};sock.connect(Address{host, "http"});sock.write("GET " + path + " HTTP/1.1\r\nHost: " + host + "\r\n\r\n");sock.shutdown(SHUT_WR);while (!sock.eof()) { cout << sock.read();}sock.close();
An in-memory reliable byte stream
在内存中实现一个可靠的字节流对象,可以按照写的顺序读出数据。这个字节流是可以边写边读的。字节流读的操作会把数据从数据结构头部位置开始 pop
数据,写的操作会从数据结构的尾部 push
数据,因此我们考虑使用 std::deque
来实现。
为什么不使用 std::queue
?
读的操作分为了两步,第一步是从读取长度为 len
的字节流,第二步是将这长度为 len
的字节流从数据结构中删除。
这两个操作分为了两个函数。对于第一个函数,我们需要一个 iterator
来选取要取出的字节范围,而 std::queue
没有提供一个 iterator
接口。
当然,也可以使用 std::list
来实现这个数据结构。
byte_stream.hh
class ByteStream { private: std::deque _buffer{}; size_t _capacity = 0; size_t _write_cnt = 0; size_t _pop_cnt = 0; bool _stream_end = false; bool _error = false; ...
构造函数
ByteStream::ByteStream(const size_t capacity) : _capacity{capacity} {}
写的操作,因为我们的 _buffer
是有容量限制的,因此要判断要写入的是否超过了容量。
size_t ByteStream::write(const string &data) { const size_t res = std::min(data.size(), _capacity - _buffer.size()); _write_cnt += res; for (size_t i = 0; i < res; i++) { _buffer.push_back(data[i]); } return res;}
读的操作,先 peek_output
再 pop_output
。
string ByteStream::peek_output(const size_t len) const { const size_t peek_len = std::min(len, _buffer.size()); return std::string{}.assign(_buffer.begin(), _buffer.begin() + peek_len);}
void ByteStream::pop_output(const size_t len) { const size_t pop_len = std::min(len, _buffer.size()); _pop_cnt += pop_len; for (size_t i = 0; i < pop_len; i++) { _buffer.pop_front(); } return;}
// 输入结束,由使用者调用void ByteStream::end_input() { _stream_end = true; }// `true` 表示 输入结束bool ByteStream::input_ended() const { return _stream_end; }// buffer 现在有多少字节size_t ByteStream::buffer_size() const { return _buffer.size(); }// `true` 表示 buffer 是空的bool ByteStream::buffer_empty() const { return _buffer.empty(); }// ‘true’ 表示 读 完了数据bool ByteStream::eof() const { return buffer_empty() && input_ended(); }// 写入了多少字节,写入时累积size_t ByteStream::bytes_written() const { return _write_cnt; }// 弹出 buffer 的数据大小size_t ByteStream::bytes_read() const { return _pop_cnt; }// 目前空余的容量大小size_t ByteStream::remaining_capacity() const { return _capacity - _buffer.size(); }
-
【计算机网络】Stanford CS144 Lab0 : networking warmup 学习记录
CS144官方镜像:https: cs144 github io kangyupl备份的镜像:https: kangyupl gitee io cs144 github io 实验准
来源: 【计算机网络】Stanford CS144 Lab0 : networking warmup 学习记录
天天最资讯丨React框架运行机制
netcore之异步并不是多线程!
天天观点:NVIDIA御用游戏《赛博朋克2077》终于支持DLSS 3:性能暴涨3.9倍!
天天热推荐:机械硬盘:彻底陨落
天天热头条丨地球最黑暗的时刻:被狂轰滥炸长达2000万年
信息:游客岳飞观高喊“还我河山” 砸打秦桧像:景区已报警
焦点热文:丰田章男:一年卖出1049万辆汽车!却败给了电动车
环球快报:特斯拉2022年在华营收181.45亿美元:占比降至约22%
天天微动态丨千呼万唤始出来 《赛博朋克2077》正式支持DLSS3
神十五乘组太空过春节!这一看就是咱中国的空间站:红红火火
天天热头条丨MySQL之MVCC总结理解
环球关注:autojs实例02-为朋友圈指定好友点赞
Prometheus&Grafana基本使用
直播:5万年一遇绿色彗星逼近地球 肉眼可见
python教程:shutil高级文件操作
当前播报:自定义ConditionalOnXX注解(二)
世界焦点!河南矿山开工招聘电话被打爆:因6100万奖金火出圈
天天热议:对不起!《狂飙》反派集体直播“道歉”:阵势让网友欢呼太上头
观热点:日本厂商2023年推出新款磁带收音机:支持U盘数据转录
天天日报丨戴尔灵越Pro 2023系列上架:13代酷睿P系 5999元起
DDS结构的FPGA实现
【算法训练营day34】LeetCode1005. K次取反后最大化的数组和 LeetCode134. 加油站 LeetCode135. 分发糖果
天天观焦点:女子有洁癖:每天消杀双手10次 结果患乏脂性皮炎
最新快讯!彻底消灭自燃!宝马今年开始测试固态电池:计划两年后装车
世界信息:情人节倒计时 国外动物园想出报复前任的绝妙点子:蟑螂惨了
当前速讯:宏碁杀入显卡市场!通吃Intel/AMD、不碰NVIDIA
新资讯:《狂飙》热播!湖南一网吧凌晨变《狂飙》专场
实时焦点:如何手动补充陈年老库(或纯 JS 代码)的 TypeScript 类型?
中国新车质量榜:前四均被合资车企包揽 本田最大赢家
刷新中国影史记录!2023年院线全年总票房已破百亿
播报:男生和女生初四相亲初八订婚:称不想耽误节后上班!网友惊到
全球热头条丨《黑豹2》中国角色海报发布:全员黑色皮肤 2月7日上映
看点:我国自研水陆飞机!“鲲龙”AG600M全面进入型号取证试飞阶段
博客园主题美化DIY教程
全球短讯!优秀前端都应该具备的开发好习惯,坚持了效率翻倍
每日视讯:有博主称《满江红》制作成本不到1000万!歌手胡彦斌一番话上了热搜第一
视焦点讯!Xbox月活用户突破1.2亿!微软赢麻了
全球快看:强盛集团橱窗上架《孙子兵法》:还卖小灵通手机壳
迄今为止最庞大的公版显卡来了?RTX 4090Ti/Titan曝光
比亚迪正式进军日本市场卖车:“两田一产”如临大敌
世界消息!Linux 服务器Python后台运行服务(ssh断开不退出)
资讯推荐:Docker-consul的容器服务更新与发现
【天天时快讯】记录--手把手教学,实现一个优雅的图片预览
每日快报!首款车明年量产!小米汽车最新专利公布:手表控制车有戏
天天热文:A卡游戏画面鲜艳 N卡灰蒙蒙?可能是这里设置错了
焦点播报:北美杀入前十后《流浪地球2》官宣:2月9日在中国香港及澳门上映
焦点简讯:三体人为什么那么害怕地球人的加速器?中科院科普
中国航天科技喊话《流浪地球2》:太空天梯、地球车站、空间驿站有望实现
全球报道:网易二面:CPU狂飙900%,该怎么处理?
每日看点!男子打赏女主播1.8万后起诉欲要回!最终被驳回诉求
焦点速递!男子寄5万元笔记本被摔坏索赔遭拒:屏幕、键盘都烂了 维修要2万
动视暴雪点赞《最后生还者》:索尼令人敬畏 我们被收购是应该的
天天热头条丨官网12.4万元帕纳梅拉遭抢购 保时捷:情况属实 已与首单用户达成协议
当前观察:索尼PS5现货全开放!黄牛惨了:带大量机器退货遭拒
环球资讯:Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的?
全球聚焦:【促进开发】上海道宁与DHTMLX为您提供易于使用且功能丰富的JavaScript组件
APITable:免费开源的多维表格与可视化数据库,上线1天斩获GitHub星标1000+
今日精选:HTTP笔记1--网络模型
环球速讯:selenium + python自动化测试环境搭建
刘慈欣:30年前拍不成《流浪地球2》 投资人不会信的
观热点:SSD性能领先35倍 机械硬盘命悬一线:没啥理由买
【全球速看料】流浪小狐狸投奔看守所1年胖成球:今年要帮它减肥
不止砍掉UFS 4.0:三星Galaxy S23标准版遭全方位缩水
c++代码实现中时间复杂度的不断优化
聚焦:一步一步实现若依框架--2.4数据权限 data_scope
800W功耗!RTX 4090 Ti四插槽"核弹"真的有 但不一定能生出来
全球微速讯:《最后生还者》剧集第3集与游戏对比 还原度高
实时焦点:摩托骑手广东高速上恶意损坏其他车辆 官方回应:一刀切禁摩很好?
天天观察:云萌 V2.6.3.0 win10,win11 Windows永久激活工具
热推荐:基于Spring Cache实现Caffeine、jimDB多级缓存实战
portswigger 靶场之 XSS 篇 (下)
全球最新:【算法训练营day32】LeetCode122. 买卖股票的最佳时机II LeetCode55. 跳跃游戏 LeetCode45. 跳跃游戏II
部署Kubernetes Cluster
每日短讯:12.4万买新帕纳梅拉!近600名国内网友保时捷官网疯抢:成功下单后被取消
【全球时快讯】奔驰获全球首家L3级自动驾驶认证:开车不用看路 出事故奔驰负责
【快播报】优酷回应1元会员被扣24元争议:活动规则已告知 扣钱没毛病
当前热文:水墨风场景惊艳!《仙剑奇侠传7》DLC《人间如梦》官宣2月发售
彻底扑灭一台特斯拉Model S有多难 消防员实测:用了22.7吨水
天天快消息!Android 软键盘丝滑切换(一)
天天看点:视频发布失败原因不好找?火山引擎数智平台这款产品能帮忙
速看:OpenYurt v1.2 新版本深度解读(一): 聚焦边云网络优化
【环球播资讯】小鹏股价暴跌、交付量惨淡 何小鹏专访回应:未来会这么做
全球动态:全球首个!婴幼儿视功能损伤手机智能筛查系统面世
撸猫手感 绿联iPhone 12-14系列液态硅胶保护壳9.9元起
天天快看点丨海淘不香了!日版Xbox主机涨价将近260元
天天速递!全国首烧?疑似红旗E-HS9充电时起火 现场黑烟弥漫
瑾娘为什么要杀华裳?瑾娘为什么假扮巽芳?
爱在旅途大结局是什么?爱在旅途剧情介绍
法国属于西欧还是北欧?南欧包括哪些国家?
荷兰为什么被称为水之国?荷兰水之国的资料简介
长宽高的英文缩写分别是什么?长宽高怎么算平方?
oppor7手机版本低怎么升级?oppo r7手机参数
复工第一天:请马上卸载这个恶心的软件!!!
全球看热讯:python-paramiko操作的封装
无法定位序数是什么意思?无法定位序数怎么解决?
打印机驱动在电脑哪里找?如何卸载打印机驱动?
无线适配器或访问点有问题是什么意思?无线适配器或访问点有问题怎么处理?
魅族手机怎么样?魅族手机锁屏密码忘了怎么解开?
环球速讯:工信部明天起优化调整微波频率 为5G/6G预留频谱资源