从事网络编程有五年多了,写过自己的Server,读过大部分网络库libevent,redis, muduo等等,市面上的网络用书大多读过,给新人一些建议,主要是从事服务器网络编程后端的同学。

如果你没写过网络编程的代码,也没有这方面的知识,那么该如何下手呢?这个时候不需要盲目看书,先培养一下自己的兴趣,了解TCP如何建立连接,TCP三次握手和四次握手的过程,有了这个,然后去了解socket方面编程的基本知识,socket的创建,绑定,连接,发送,接收,建立连接等api,学习完这些api,试着去写一个单线程阻塞通信demo,客户端发送数据,服务器接收数据,然后将数据返回给客户端,客户端收到后继续发送,这样简单的echo服务器就写出来了。

这是我做的一个小demo,可以参考下,但是不是echo,读者可自己改为echo服务器。

http://www.cnblogs.com/secondtonone1/p/5460942.html

如果很多个客户端连接过来怎么处理呢?这时需要了解多线程模式的网络编程,你可以去了解accept原理,和线程创建处理新的连接。这样就可以做出一个多线程echo的Server了。

这是我做的一个简单的accept多线程服务器,读者可自己改为echo模式

http://www.cnblogs.com/secondtonone1/p/5461120.html

有了这些基础知识,你就可以深入了解网络变成了,下一步要做的是了解TCP的socket缓存原理,阻塞原理,非阻塞的socket如何返回错误码,错误码的意义和如何处理,这些知识是你学习非阻塞多路复用的基础,学完这些,可以学多路复用的几种模型了,select,poll, epoll,iocp,kqueue等等,学的时候去补充自己不知道的一些TCP知识。多路复用学习后可以简单的去写一些多路复用服务器demo。

这是我之前讲过的epoll知识和自己写的epoll demo

http://www.cnblogs.com/secondtonone1/p/5367495.html

http://www.cnblogs.com/secondtonone1/p/5432453.html

会写多路复用服务器就可以了吗?这只是开始,下面就要阅读源码和高性能的框架了,我推荐去读一读redis和libevent这两个框架,对网络编程提升很大,其中的缓存思想也很重要。这个时候你需要的是从框架的角度搭建一个高性能的服务器,需要了解事件堆,Reactor模式,Proactor模式,将不同的多路复用封装为一个IOService,就像libevent的EventLoop,像boost asio的ioservice一样。

下面是我封装的一个服务器,上传到github了

https://github.com/secondtonone1/betternet

这些都会了,也就是我现在的水平了,我现在在看一些网络大神的思想和视频,从他们的设计角度感受如何架构一个优秀的框架,建议大家看看陈硕的muduo网络库和编程视频,能醍醐灌顶。我现在也在学一些其他的框架,主要是想触类旁通,同时看看优秀的框架代码,虽然自己写不出太优秀的框架,至少可以开阔眼界,作为积累。

下面是推荐大家的网络图书:

我推荐新手先看

Linux程序设计(第4版)

Linux高性能服务器编程

看过之后再看Richard的三本网络书

这些都看过之后,需要实战,实战过程中可以看看

以及

陈硕的经验之谈,我现在在看的

这些都看过了,可以看看源码

libevent 源码下载地址:

http://libevent.org/

redis源码下载地址:

http://www.redis.cn/download.html

boost asio 文档和下载:

http://www.boost.org/doc/libs/1_63_0/doc/html/boost_asio.html

muduo网络库:

http://code.csdn.net/openkb/p-muduo

这些源码都搞通了,就有了自己的方法和框架了,然后就自己闯荡吧。

这是我的公众号,谢谢关注:

转载于:https://www.cnblogs.com/secondtonone1/p/6700785.html

网络编程学习方法和图书推荐相关推荐

  1. 网络编程下的图书管理系统

    项目简介 通过网络编程的传输方式来实现图书管理系统的增删查改操作,这个传输过程也类似于web应用的前后端数据传输,前端发来请求,通过对请求的处理之后交由后端接口去处理并返回所需要的数据. 需求分析 1 ...

  2. C# 通过豆瓣网络编程API获取图书信息

    这篇文章主要是关于如何通过豆瓣API获取信息的书籍,起初,我看到了原来的想法的内容是"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源代码,再通过正則 ...

  3. Linux网络编程必看书籍推荐

    首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...

  4. 网络编程项目:图书管理系统

    1.运行结果 1.1-1管理员登陆 1.1-2管理员添加书籍信息 1.1-3查询所有书籍信息 1.1-4指定查询某种书籍信息 1.1-5修改书籍信息 1.1-6删除书籍信息 1.1-7会员登陆 1.1 ...

  5. 计算机tcpip网络原理与应用,清华大学出版社-图书详情-《TCP/IP网络编程原理与技术》...

    前言 随着Internet的发展,网络技术已经渗透到人们的生活和工作中.TCP/IP已经成为最流行的网络协议,且还在演变以满足未来的需要.在速度越来越快的计算机硬件和不断更新的软件发展的背后,TCP/ ...

  6. 图灵社区 : 图书 : UNIX网络编程 卷1:套接字联网API(英文版•第3版)

    图灵社区 : 图书 : UNIX网络编程 卷1:套接字联网API(英文版•第3版) 图灵社区 : 图书 : UNIX网络编程 卷1:套接字联网API(英文版•第3版) UNIX网络编程 卷1:套接字联 ...

  7. 编程思想图书推荐,新手入门应该看些啥

    编程思想图书推荐,新手入门应该看些啥 导入 元旦的时候,学校社团的指导老师,咨询我有没有什么可以推荐的编程思想的学习书籍,可以值得推荐精读. 说实话,我个人是买过很多书的,但是很少读书,如果非要让我推 ...

  8. Linux网络编程经典书籍推荐

    Linux网络编程经典书籍推荐 目录(?)[+] 首先要说讲述TCP/IP的书很多,其中有3泰书很全. 分别是<TCP/IP详解>三卷本,<用TCP/IP进行网际互连>三卷本, ...

  9. 小学生python趣味编程-图书推荐:《Scratch 3.0少儿游戏趣味编程》

    原标题:图书推荐:<Scratch 3.0少儿游戏趣味编程> 书皮 书皮 内容简介 本书通过讲解用 Scratch 3.0 编写15款有趣的小游戏和小程序的开发过程,由浅入深地向读者介绍 ...

最新文章

  1. 关于redis的几件小事(一)redis的使用目的与问题
  2. 数据挖掘(10):卷积神经网络算法的一个实现
  3. RK3288 GMAC整理
  4. 2020CCPC(威海) - Rencontre(树形dp)
  5. odata service authorization check in backend
  6. 编程小白模拟简易比特币系统,手把手带你写一波!(附代码)
  7. 武器系统仿真技术(一):系统误差分析的蒙特卡洛算法
  8. 【转载】文件上传命令rz和下载命令sz的安装
  9. 单链表以及双向链表的操作
  10. java编程练习题四
  11. 如何使用电脑扫描二维码
  12. excel二极管伏安特性曲线_电视机不被烧,是因为它?一个拥有反向特性的稳压二极管...
  13. C语言中的scanf、getchar、putchar、gets、puts
  14. 使用 springboot 轻松实现网站微信扫码支付以及支付回调逻辑处理(javaJDK实现)
  15. 怎么屏蔽还有照片_在朋友圈发男神照片没屏蔽父母,老妈的回应亮了
  16. 安全风险 microsoft 已阻止宏运行 因为此文件的来源不受信任
  17. 封头名义厚度如何圆整_封头规格
  18. 【送谷歌定制礼品】一起寻找最初的写作热忱 即刻动笔!
  19. 如何把程序员从久坐颈椎病中拯救出来?我为程序员做了这个救命APP
  20. 5分钟教你做一个WebView广告过滤器

热门文章

  1. crackme算法分析---CRC32算法的妙用
  2. linux用户管理常用命令
  3. 链路层的封装方式与IP选路 (二)
  4. monkeyrunner的录制与回放
  5. 微服务为什么一定要Zookeeper?
  6. 低效能人士的七个习惯
  7. 坑爹!花费2亿耗时2年,网站没建完Java都写不好,顶级咨询公司埃森哲被告上法庭
  8. 足够应付面试的Spring事务源码阅读梳理
  9. 异地多活场景下的数据同步之道 | 珍藏版
  10. 帮你理清 SpringBoot 与 SpringMVC 的关系