目标完成情况
- 牛客两道题 ---- 今天做了大概5道题
- 完成csapp最后一节tiny服务器 ---- 只是编译运行了一遍,细节还有很多没有理解
- csapp并发编程看一半
学习回顾
由于这段时间把系统级I/O和网络编程看得比较快,感觉没有真正理解,所以今天慢了下来。把前面的书重新跳着看看理解了理解。感觉一些基本的概念还是没有真正掌握,看书还是得一步一个脚印。
套接字在网络编程中的意义
就我目前的理解,可以做如下类比。
套接字 | 磁盘文件 |
---|---|
套接字地址 | 磁盘文件绝对路径 |
套接字描述符 | 打开文件描述符 |
如果两个套接字已经建立了连接,那么只要像读写普通文件那样读写套接字,就可以实现通信了。
所以对服务器的编程分为3个大的模块:
- 建立套接字的连接。(包括创建、绑定、监听、accept等等)
- 解析请求参数并处理。(涉及到数据的解析、处理、参数传递等等)
- 对套接字进行读和写。(读就是接收,写就是发送。之所以这么简单,就是因为TCP牛逼,Linux内核实现了TCP协议)
其中,第1个模块中主要使用socket接口,第3个模块可以结合普通的Unix I/O接口, 而第2个模块就是后台逻辑了,这个逻辑的结果可以是提供静态内容(将某个本地磁盘文件写到套接字),也可以是提供动态内容(执行一个本地的程序,然后将该程序的输出内容写到套接字)。
牛客做的题
汽水瓶,合唱队,晚上做了华为的笔试,大概得了250分的样子。。。
感觉自己的编码水平总体是有提高的,但是笔试这种限时训练还不够。
明日目标
- 牛客网一道题
- 将套接字函数再次复习一遍,仔细整理tiny服务器的相关知识。