一、概念
之前我们学过的管道、消息队列、共享内存和信号等,它们都是基于内核来工作的,只能让本机上的进程之间通讯,无法做到多机通讯。多机通讯就是电脑和电脑之间,或者手机和电脑之前的通讯。想要做到不同设备间的通讯,就要用到网络通讯。就涉及到网络编程的知识。
如果想要进行网络舵机通信,必须要有地址,地址中又有两个项目:
地
址
{
I
P
地
址
:
P
C
机
在
网
络
中
的
地
址
,
而
且
只
有
一
个
端
口
号
:
网
络
服
务
的
端
口
,
起
到
区
分
服
务
的
作
用
地址\left\{ \begin{array}{c} IP地址:PC机在网络中的地址,而且只有一个 \\ \\ 端口号:网络服务的端口,起到区分服务的作用\end{array}\right.
地址⎩⎨⎧IP地址:PC机在网络中的地址,而且只有一个端口号:网络服务的端口,起到区分服务的作用
设备具备了通信的条件后,想要做到数据交互的话,还需要协议,常见的网络协议有以下三种:
网
络
协
议
{
H
T
T
P
T
C
P
U
D
P
网络协议\left\{ \begin{array}{c} HTTP \\ TCP \\ UDP\end{array}\right.
网络协议⎩⎨⎧HTTPTCPUDP
补充:一些服务器的固定端口:
{
F
T
P
服
务
器
端
口
:
21
T
e
l
e
n
t
服
务
器
端
口
:
23
T
F
I
P
服
务
器
端
口
:
69
\left\{ \begin{array}{c} FTP服务器端口:21 \\ Telent服务器端口:23 \\ TFIP服务器端口:69\end{array}\right.
⎩⎨⎧FTP服务器端口:21Telent服务器端口:23TFIP服务器端口:69
二、TCP和UDP
以上三种网络协议都是一种数据格式。而本次的网络编程用到的是TCP和UDP两种协议,而且是socket套接字网络编程,而这两种协议的区别:
s
o
c
k
e
t
套
接
字
{
T
C
P
:
面
向
连
接
,
为
可
靠
连
接
信
道
U
D
P
:
面
向
报
文
,
为
不
可
靠
连
接
信
道
socket套接字\left\{ \begin{array}{c} TCP:面向连接,为可靠连接信道 \\ \\ UDP:面向报文,为不可靠连接信道\end{array}\right.
socket套接字⎩⎨⎧TCP:面向连接,为可靠连接信道UDP:面向报文,为不可靠连接信道
面向连接的意思是:一台PC机发送数据前,需要接收端同意接收才算连接成功,然后才按字节为单位的数据开始发送和接收,所以也叫面向字节流;
面向报文的意思是:连接后,会把所有数据包括相关信息整合成数据包,一股脑的发送,而且数据的长度不限且可控。
引用场景
TCP因为连接的可靠性,适合用来传递信号,做一些精细的控制。UDP协议则用于传输数据量大的数据,比如视频数据,它有响应快,内存大的特点。
三、字节序
字节序是指多字节在计算机内存中存储或者网络传输是各字节的存储顺序。那么常见序有:
字
节
序
{
L
i
t
t
e
E
n
d
i
a
n
:
小
端
字
节
序
,
数
据
从
低
地
址
到
高
地
址
的
顺
序
储
存
B
i
g
E
n
d
i
a
n
:
大
端
字
节
序
,
数
据
从
高
地
址
到
低
地
址
的
顺
序
储
存
字节序\left\{ \begin{array}{c} Litte Endian:小端字节序,数据从低地址到高地址的顺序储存 \\ \\ BigEndian:大端字节序,数据从高地址到低地址的顺序储存\end{array}\right.
字节序⎩⎨⎧LitteEndian:小端字节序,数据从低地址到高地址的顺序储存BigEndian:大端字节序,数据从高地址到低地址的顺序储存
网络字节序为大端字节序,X86系列为小端字节序。
四、socket编程步骤
假设有以下情景:
情景里有服务器和客户端,编程的步骤我们先从服务器说起:
学到这里,只要去了解以下相关API的就可以编程做实验了!