嵌入式Linux网络编程

TCP:为应用程序提供可靠的通信连接。适合于一次传输大批数据的情况。并适用于要求得到响应的应用程序。

UDP:提供了无连接通信,且不对传送包进行可靠性保证。适用于一次传输少量数据,可靠性则由应用层来负责。

TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递。应用程序通过编程调用TCP并使用TCP服务。

应用程度通过打开一个socket来使用TCP服务,TCP管理到其他socket的数据传递。可以说,通过IP的源/目的可以唯一地区分网络中两个设备的连接。通过socket的源/目的可以唯一地区分网络中两个应用程序的连接。

三次握手协议:

TCP对话通过三次握手来进行初始化。三次握手的目的是使数据段的发送和接收同步。

UDP:

UDP即用户数据报协议,它是一种无连接协议。

 

协议的选择:

1.对数据可靠性的要求

2.应用的实时性

TCP协议在传送过程中要使用三次握手,重传确认等手段来保证数据传输的可靠性,使用TCP协议会有较大的时延,因此不适合对实时性要求较高的应用。

3.网络的可靠性

由于TCP协议的提出主要是解决网络的可靠性问题,它通过各种机制来减少错误发生的概率。因此,在网络状况不是很好的情况下选用TCP协议。

socket概述

1)流式socket

流式套接字提供可靠的,面向连接的通信流;使用TCP协议。

2)数据报socket

数据报套接字定义一种无连接的服务,数据通过相互独立的报文进行传输,使用数据报协议UDP

3)原始socket

原始套接字允许对底层协议如IP或ICMP进行直接访问。

下面是对使用函数:

数据存储优先顺序

有一个知识点就是:网络字节序和主机字节序的转化

对于网络字节序:

按从高到低的顺序存储,在网络上使用统一的网络字节顺序(大端模式)

对于主机字节顺序:

就是数据的存储顺序是由cpu(就是主机的cpu)决定的,而与操作系统无关

socket基础编程及流程:

嵌入式Linux网络编程

使用UDP协议socket编程流程使用图:

没有bind()函数,因为在UDP的连接中无必要

最后一句:

当多个客户端连接服务端时,要可以考虑fcntl()或者select()函数