就当是迷你版的UNP吧
UNP很好,非常好,太好了。
说UNIX/Linux下的网络编程是无法避免Richard Stevens的UNP的。但是说实在的,UNP太厚实了,是滴,全面,细腻是很好滴,但是对于初学者们来说,往往更重要的是尽快对socket编程上手,我想基本上只有还算上过《计算机网络》这门课的,对网络基本原理,OSI模型,对TCP/IP基本概念还是有的吧,那么接下来就可以写socket,不一定要写的多好多优雅,考虑多全面,作为初学者,您不能要求自己太高,这并不是浮躁。对于学编程,尤其是定领域技术的编程,我一贯的主张就是要尽快统观全局,对全局的每个部分最关键的概念、编程接口和编程结构有简明但不失深入的了解,我窃称之为:第一阶段。然后我们就有基础和信心去啃大砖头,比如UNP,同时进行深入的实践和调试,这是第二阶段。第三阶段,就是直接上项目吧,也可以去调调开源的代码。
第一阶段,时间最好要控制在3~5天之内,当然像The Definitive Guide to Linux Network Programming(下面简称DGLNP)这样的英文书,还是电子版的,就发挥下传统美德,硬着头皮一周最不济10天看完吧。时间越短越不会遗忘,同时会觉得有阅读的成就感。
第二阶段,就可以搬起UNP来啃了,花多少时间看自己的悟性吧。反正我还在-ing。这时候Stevens那种一丝不苟、细腻推敲、深入浅出,不但可以弥补之前第一阶段留下的知识、经验的漏洞,还可以潜移默化培养我们思维的严谨细腻品质。。。
♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠
上面八卦了。DGLNP就是这样一本适合第一阶段的书,对于网络编程,关键有三:
A. 要理解网络组成原理与体系结构;
B. 要理解协议的特点及各种协议之间的关系/对比;
C. 有了前两个,就要开始熟悉API运用。
DGLNP基本上就是按三个面来写的。A算是最基本的了吧,比如俺们都搞CS的,不会connection-oriented和connectionless的概念都没有吧,不管有没有,作者告我们,Ethernet要懂吧,网络地址要懂吧,TCP/UDP/IP是啥,必须滴…对于B,这本书没特地的讲,而是揉合在C里面一起讲,这也靠谱,其实也简单,说白了就是TCP是面向连接的可靠报文服务,UDP不可靠,它们又都以IP datagram为基础。反映到编程接口(API)上,程序怎么表示这些概念,怎么描述这些不同呢?知道程序的表示法——而不是俺们银类的自然语法描述法——之后,就完全可以大刀长枪搞具体运用了,于是自然而然引入client-server模型了,再挖掘Unix/Linux系统特点——尤其,I/O.....
我喜欢简洁直接,喜欢扼要。尤其是初入门的时候。。当然,话还得说回来,UNIX/Linux 网络编程是“水很深”的东西,所以标题说了,就当是迷你版的UNP吧。任重而道远。程序猿的脚步是不会停的。。。。
就当是迷你版的UNP吧相关推荐
- 写出我的第一个框架:迷你版Spring MVC
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:张丰哲 https://www.jianshu.com/p/ ...
- 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)
前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...
- 【手写系列】写一个迷你版的Tomcat
前言 Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道.这是一只神奇的猫,今天让我来抽象你,实现你! Tomcat Write MyTomcat Tomcat是非常流行的 ...
- 【手写系列】写出我的第一个框架:迷你版Spring MVC
你没有看错标题,今天,我将实现我人生中第一个框架,^_^ 前期准备 我这里要写的是一个迷你版的Spring MVC,我将在一个干净的web工程开始开发,不引入Spring,完全通过JDK来实现. 我们 ...
- 雷蛇灯光配置文件_没想到吧,雷蛇竟然出61键小尺寸机械键盘了!雷蛇猎魂光蛛迷你版上手...
雷蛇的键盘,越出越小. 这是昨天刚发布的雷蛇猎魂光蛛迷你版机械键盘.采用紧凑61键配列,继承猎魂光蛛家族式设计语言,悬浮结构.金属面板.键盘的边框很窄,正面没有LOGO,移到了下沿正中央.底座是塑料材 ...
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...
- 本页由试用版打印控件lodop6.2.6输出_Visual Basic 6.0 Sirk 迷你版
Visual Basic 6.0 Sirk 迷你版 VB6 Sirk Mini 2019更新 1.支持主流操作系统,避免原版安装失败的问题:支持Windows XP.Vista.Win7.Win8.W ...
- Web前端—— JQuery迷你版实现以及使用
JQuery迷你版实现以及使用 tiny_jquery.js var $ = function (selector) {var ele = document.querySelector(selecto ...
- 迷你版Spring MVC 实现
2019独角兽企业重金招聘Python工程师标准>>> 迷你版Spring MVC 实现 本文参考自 写出我的第一个框架:迷你版Spring MVC ,写这篇文章用于个人学习的记录. ...
最新文章
- 小米6自动重启android,小米6充电重启怎么办 小米6充电自动重启解决方法
- 多个if用什么设计模式_抽丝剥茧——单例设计模式
- CSDN博客不能正常发布的问题
- Android Studio(十):添加assets目录
- cisco接口模式转换
- Rust: codewars的DNA to RNA Conversion
- 解决VMware 小度wifi 驱动报错问题 Driver error
- Java 项目中使用 TongLink/Q 实现消息队列传输
- 如何在子控件上使用WS_EX_LAYERED
- FATAL Exited too quickly (process log may have details)
- WordSequence API
- nginx启动无反应
- Unix操作系统历史
- 浅谈数据结构以及其特点
- pnpm不更新package.json的问题
- linux字体技术原理
- linux vnc 重启命令,vnc server配置、启动、重启与连接,图形管理linux系统
- Compiling Cpp
- new Data()、set Data()、get Data()方法、时间戳转换
- 交直流与电路分析三板斧