【转帖】嵌入式网络编程 | socket服务器讲解

 

        大家好,在这里先跟大家说声抱歉,更新推迟了这么久,有的小伙伴已经快把法师的后台给爆破掉了。因为最近真的抽不出来时间为大家更新,但是小伙伴请放心,既然我们做了这个学习和交流的平台,法师一定会克服一切困难,为大家维护这个小圈子。

       大家可以加一下迅为的粉丝群,在群里面,大家可以一起交流学习,或是在里面催更,这个群是谁都可以加的,如果有喜欢嵌入式的同学,也可以拉他们进来,我们集体来维护这个学习的小圈子,群号:822183461

       今天我来学习socket服务器代码的编写,在写这篇文章之前,法师想了好久要怎么写,怎么讲才能让基础不好的小伙伴快速理解这个知识点,既不能说的很深入,也不能一笔带过,否则就太鸡肋了。如果大家看了文章感觉不错,可以在评论区留言,和法师互动一下,这样我就知道你看懂啦~

        话不多说,我们先来看代码,这里以TCP为例子注意是TCPsocket服务器代码如下:

 

 

 

 

乍看一眼,这些代码是不是很让人头疼呢,说好的让我们快速理解这个知识点呢?不要着急,我们来分步看一下,逐个击破,首先来看下这个代码的整体的一个思路,也就是程序框图。对他有一个整体的把握。

框图如下:

 

 

 

通过上面的框图我们知道,一共分为五个步骤,第一步我们要先创建一个socket。第一步代码如下,也就是上面的第一个截图。

 

 

这句代码的意思是创建一个socket,使用IPV4,TCP协议,自动协商协议。具体解析如下:

 

第一步是不是很简单,我们一个函数就搞定了,我们来看第二步,绑定一个socket,代码如下:

 

 

绑定一个socket我们使用的是bind函数,这里的结构体成员大家只要先记住就好,先不要去深究他,我们最后说这个特殊的结构体,注意端口号不要超过65535,因为端口号的范围是1-65535,并且1-1024我们最好也不要使用,因为有的程序会占用,最好用后面的。

       网络通信是大端序。所以用到了htonl()函数,大端序为高字节在低,低字节在高,小端序反之。

代码解析:

 

小端转大端函数:

到这里第二步就结束了,这里的知识如果有不懂的,大家先不要去深究他,记住就可以了,不然万一钻牛角尖会越陷越深。比如,为什么网络通信是大端序,不要管为什么,我们记住他是大端序就OK了。

       第三步就比较简单了,开始监听,这里我使用listen函数,代码如下:

 

 

代码解析:

第四步,接收连接,我们是accept函数,accept函数是会阻塞的,代码如下:

代码解析:

 

 

是不是有些头疼了,我们来看最后一步,开始读写。代码如下:

 

这样,我们服务器的代码就写完了,然后在回头看整个的代码是不是就轻松多了?这部分呢,大家只要记住这个流程图和这几个函数,就可以快速的掌握这个知识点了。哪怕代码不懂,不会写,心里一定要记住法师的这个流程图。万一在秋招中遇到这个问题是不是就赚了呢~~,下篇文章我们一起来看客户端代码的编写并在开发板上进行验证。

 

http://topeetboard.com

本文转自迅为电子微信公众号