Lab0:networking warmup
本文记录了 Lab 0: networking warmup 的实验过程
Lab 材料:Lab 0: networking warmup
热身性质的 Lab,不算太难,这里就主要记录一下两个 task 的一些思路
Task #1:Writing webget
这个任务的目的是使用 OS 提供的 TCP 和 stream-socket 来获取因特网上的 Web 页面。
因为前面的实验指导书已经教了你如何使用终端命令来获取 cs144.keithw.org 中的 /hello
;因此我们的代码就按照这个思路来做。在实现之前需要看一下这几个类:FileDescriptor
,Socket
,TCPSocket
和 Address
- 使用
write
函数将需要请求的内容发送给 server - 注意在我们发送完请求信息时需要立刻关闭,使用
shutdown(SHUT_WR)
- 获取完 server 返回的信息后需要调用
close()
大概也就十行代码左右吧
Task #2:An in-memory reliable byte stream
由于要求你自己添加 ByteStream 的私有成员变量,因此你需要了解一下 Lab 需要我们实现的各个接口的作用。下面给出一个我的实现
1 | std::deque<char> _ring; //!< store byte stream. |
需要注意的是:eof()
函数只有当 input_ended()
和 buffer_empty()
都返回真时才返回真
测试
1 | make -j4 |