zoukankan      html  css  js  c++  java
  • socket网络编程知识梳理,让你学会造轮子的能力

    在前面几篇中,我给大家介绍了socket的相关知识,也给出了详细的代码,从socket的基本介绍,到IO多路复用,以及粘包拆包,最后到心跳包问题。总的来说大概都把socket网络编程中能碰见的问题都讲了,但肯定讲得不够深入,会有一些遗漏,如果有哪些知识点技术点的遗漏,欢迎大家指出,本人虚心接受。

    现在我将socket网络编程前面几篇讲的内容重新梳理一遍。

    socket网络编程(一)——初识socket》。主要介绍了我们为什么需要socket,以及socket的相关函数,掌握这些函数你并不能写出很好的网络编程的代码,但是不掌握这些,你绝对写不出来。这些函数是socket网络编程的基石,任何复杂的网络通信底层肯定都有这些函数。

    socket网络编程(二)——实现持续发送》。要在网络通信的过程中持续地发送消息,而服务不会断掉,这个是必须掌握的。以及在持续发送的过程中碰见的一些怪异问题,该篇幅中有给大家介绍,以及给出了解决办法。

    socket网络编程(三)——select多路复用问题》。当有多台客户端的时候,我们又该如何通信呢?如何准确地把消息发到对应的客户端呢?这些都是多路复用该考虑的问题,这篇文章里通通都会给大家介绍。

    socket网络编程(四)——epoll多路复用问题 》。当服务达到了百万级、千万级的并发的时候,select多路复用就几乎是无能为力了,即使能做,也是影响效率,这是他的底层机制所决定的。所以就需要epoll多路复用了,如果你想搭建一个千万级的并发的系统,那么网络通信的底层必须是要用epoll。

    socket网络编程(五)——粘包拆包问题 》。TCP协议的通信机制导致了通信过程中会发生粘包和拆包的问题,这篇文章给大家介绍了发生的原因以及解决的办法,也给出了详细的代码。

    socket网络编程(六)——心跳包问题 》。心跳包也是在socket网络编程中要考虑的问题,主要用于检测客户端与服务端的连接是否还在,具体的实现大家可以参考这篇文章。

    以上就是socket网络编程中需要掌握的地方,每篇文章都给出了详细的代码步骤,实践会偏多,理论知识点可能有点偏少。像TCP三次握手四次挥手这样经典的过程就并没有讲,网络讲解非常多,大家可以自己去搜搜看。后期如果有时间,我再来阐述。

    毫不夸张地说,只要是为了实现网络通信,不管是C++、JAVA、PYTHON、LUA还是其他的语言,也不管是多么复杂难懂的框架,他们的底层框架都考虑到以上的东西,所以只要掌握了以上的理论知识,都可以很好的驾驭各种框架,甚至未来你可以写出属于自己网络通信的框架来,这就是所谓的造轮子能力。

    更多精彩内容,请关注同名公众:一点月光(alittle-moon)

  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/kiwiblog/p/13976029.html
Copyright © 2011-2022 走看看