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吧相关推荐

  1. 写出我的第一个框架:迷你版Spring MVC

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:张丰哲 https://www.jianshu.com/p/ ...

  2. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)

    前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...

  3. 【手写系列】写一个迷你版的Tomcat

    前言 Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道.这是一只神奇的猫,今天让我来抽象你,实现你! Tomcat Write MyTomcat Tomcat是非常流行的 ...

  4. 【手写系列】写出我的第一个框架:迷你版Spring MVC

    你没有看错标题,今天,我将实现我人生中第一个框架,^_^ 前期准备 我这里要写的是一个迷你版的Spring MVC,我将在一个干净的web工程开始开发,不引入Spring,完全通过JDK来实现. 我们 ...

  5. 雷蛇灯光配置文件_没想到吧,雷蛇竟然出61键小尺寸机械键盘了!雷蛇猎魂光蛛迷你版上手...

    雷蛇的键盘,越出越小. 这是昨天刚发布的雷蛇猎魂光蛛迷你版机械键盘.采用紧凑61键配列,继承猎魂光蛛家族式设计语言,悬浮结构.金属面板.键盘的边框很窄,正面没有LOGO,移到了下沿正中央.底座是塑料材 ...

  6. ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程

    从<ASP.NET Core管道深度剖析(1):采用管道处理HTTP请求>我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但 ...

  7. 本页由试用版打印控件lodop6.2.6输出_Visual Basic 6.0 Sirk 迷你版

    Visual Basic 6.0 Sirk 迷你版 VB6 Sirk Mini 2019更新 1.支持主流操作系统,避免原版安装失败的问题:支持Windows XP.Vista.Win7.Win8.W ...

  8. Web前端—— JQuery迷你版实现以及使用

    JQuery迷你版实现以及使用 tiny_jquery.js var $ = function (selector) {var ele = document.querySelector(selecto ...

  9. 迷你版Spring MVC 实现

    2019独角兽企业重金招聘Python工程师标准>>> 迷你版Spring MVC 实现 本文参考自 写出我的第一个框架:迷你版Spring MVC ,写这篇文章用于个人学习的记录. ...

最新文章

  1. 小米6自动重启android,小米6充电重启怎么办 小米6充电自动重启解决方法
  2. 多个if用什么设计模式_抽丝剥茧——单例设计模式
  3. CSDN博客不能正常发布的问题
  4. Android Studio(十):添加assets目录
  5. cisco接口模式转换
  6. Rust: codewars的DNA to RNA Conversion
  7. 解决VMware 小度wifi 驱动报错问题 Driver error
  8. Java 项目中使用 TongLink/Q 实现消息队列传输
  9. 如何在子控件上使用WS_EX_LAYERED
  10. FATAL Exited too quickly (process log may have details)
  11. WordSequence API
  12. nginx启动无反应
  13. Unix操作系统历史
  14. 浅谈数据结构以及其特点
  15. pnpm不更新package.json的问题
  16. linux字体技术原理
  17. linux vnc 重启命令,vnc server配置、启动、重启与连接,图形管理linux系统
  18. Compiling Cpp
  19. new Data()、set Data()、get Data()方法、时间戳转换
  20. 交直流与电路分析三板斧

热门文章

  1. UI设计师如何自学?
  2. 一个95后开发者关于消息发送的实践
  3. 雪球网沪深全站股票评论爬虫
  4. 该太阳能电池板的生产工艺
  5. GCC的学习(一)GCC简介及其常用选项
  6. 抖音矩阵账号系统开发者源码搭建分享
  7. 奇门排盘.net实现代码(C#)原创
  8. Apache Atlas 2.0.0编译过程中遇到的问题及解决方案
  9. 银行柜台操作系统,真实版
  10. jquery append()和appendTo() 的区别