zoukankan      html  css  js  c++  java
  • 网络编程学习方法和图书推荐

            从事网络编程有五年多了,写过自己的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

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

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

  • 相关阅读:
    Monte Carlo Primer
    MCCCS Towhee: Pressure
    towhee中计算临界温度和密度- 摘自小木虫
    什么是温度?
    Bennett acceptance ratio
    LAMMPS Polydisperse Packings
    科普 [分子力学总势能(或者LJ势能)能量最小化]
    How to make fix rigid/nvt work compatibly with compute temp/com command, or any other alternative options in non-equilibrium simulations.
    WebDriverWait&expected_conditions
    Selenium自动化测试-unittest单元测试框架使用
  • 原文地址:https://www.cnblogs.com/secondtonone1/p/6700785.html
Copyright © 2011-2022 走看看