CS144-实验环境搭建和Lab0
实验环境
- 这次打算用 Jetbrains Gateway进行远程开发。按照 CS144 README 进行远端Clion的配置。注意环境变量和编译时传给cmake的宏的设置。
- 安装TcpDump,最好从Github的源码编译安装,5.0版本后的tcpdump可以保存pcap文件中同时输出到标准输出流中。
实验0
使用TCPsocket和一个webserver(对端监听80端口)进行通信,类似于curl。
代码十分简单,按照socket通信流程编写即可。lab0仅完成下图中描述的TCP客户端流程即可
图片来源微信公众号Linux fd 系列 — socket fd 是什么?
下面给出我的实现
1 |
|
测试
如果使用Clion的话,需要先build All Test,再运行相关测试。测试的那些target只运行测试不进行编译链接
进行抓包测试。 我的客户端是先半关闭,再一点点读对端发来的数据。抓到的包也反映了这一点
如果使用5.0版本的tcpdump的话,可以使用–print参数。否则只能先保存,再查看。
1 |
|
这里使用了Vscode Crumbs插件用来在Vscode中看pcap包
附:CS144代码风格
CS144 使用 C++11 标准完成实验,它对C++代码的风格有着严格的限制:
使用 Resource acquisition is initialization 风格,即 RAII 风格。
禁止使用 malloc 和 free 函数
禁止使用 new 和 delete 关键字
禁止使用原生指针(*)。若有必要,最好使用智能指针(unique_ptr等等)。(该实验没有必要用到指针)。
禁止使用模板、线程相关、各类锁机制以及虚函数
禁止使用 C 风格字符串(char*) 以及 C 风格字符串处理函数。使用 string 来代替。
禁止使用 C 风格强制类型转换。若有必要请使用 static_cast
传递参数给函数时,请使用常量引用类型(const Ty& t)
尽可能将每个变量和函数方法都声明成 const
禁止使用全局变量,以及尽可能让每个变量的作用域最小
在完成代码后,务必使用 make format 来标准化代码风格。
CS144-实验环境搭建和Lab0
https://gwzlchn.github.io/202205/cs144-lab0/