互联网采用TCP/IP协议并不是ISO规定的标准协议,但是作为应用最广泛的协议已经成为大规模网络通信的事实标准。TCP/IP协议实际上是由一组协议组成的,通常也称作TCP/IP协议簇。图10.10IPv4协议头部从图中可以看出这是个复杂的结构,最常用字段是源地址和目的地址,用来寻址和查路由。如图10.9所示,TCP协议位于网络互联层后,是IP协议的上层协议。......
2023-11-19
1.UDP协议与TCP协议的不同
TCP协议是面向连接的传输协议,建立连接时要经过三次握手,断开连接时要经过四次握手,中间传输数据时也要回复ACK包确认,多种机制保证了数据能够正确到达,不会丢失或出错。
UDP协议是非连接的传输协议,没有建立连接和断开连接的过程,它只是简单地把数据塞到网络中,不需要ACK包确认。
因此TCP协议数据传输的可靠性高,UDP协议结构简洁、不发送ACK应答信息,传输效率高。
2.sendto()函数
在Linux环境下,用UDP协议发送数据的函数sendto,函数原型为:
ssize_t sendto(int sockfd,void∗buf,size_t nbytes,int flags,struct sockaddr∗to,socklen_t addrlen);
具体参数如下:
sockfd:用于传输UDP数据的套接字;
buf:保存待传输数据的缓冲区地址;
nbytes:带传输数据的长度(以字节计);
flags:可选项参数,若没有可传递0;
to:存有目标地址信息的sockaddr结构体变量的地址;
addrlen:传递给参数to的地址值结构体变量的长度。
3.recvfrom()函数
在Linux环境下,用UDP协议接收数据的函数recvfrom,函数原型为:
ssize_t recvfrom(int sockfd,void∗buf,size_t nbytes,int flags,struct sockadr∗from,socklen_t∗addrlen);
具体参数如下:
sockfd:用于接收UDP数据的套接字;
buf:保存接收数据的缓冲区地址;
nbytes:可接收的最大字节数(不能超过buf缓冲区的大小);
flags:可选项参数,若没有可传递0;(www.chuimin.cn)
from:存有发送端地址信息的sockaddr结构体变量的地址;
addrlen:保存参数from的结构体变量长度的变量地址值。
4.UDP程序流程
由于在UDP通信中没有理解的概念,可以随时使用任何一个socket向对方发送数据,而接收数据还是需要先将socket与一个地址绑定,其程序流程如图8.6所示。
图8.6 UDP通信流程
5.UDP通信例程
UDP通信模型本身没有服务器和客户端的概念,通信双方地位完全是平等的。但在实际应用中常常把等待接收数据并及时作出响应的一方称为服务器,而将主动发送数据并等待对方响应的一方称为客户端。
例程由两个文件组成:udpserver.c是服务器端程序,udpclient.c是客户端程序。
udpserver.c源码如下:
#include<stdio.h>
#include<std lib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
intmain()
有关ARM嵌入式系统原理与应用的文章
互联网采用TCP/IP协议并不是ISO规定的标准协议,但是作为应用最广泛的协议已经成为大规模网络通信的事实标准。TCP/IP协议实际上是由一组协议组成的,通常也称作TCP/IP协议簇。图10.10IPv4协议头部从图中可以看出这是个复杂的结构,最常用字段是源地址和目的地址,用来寻址和查路由。如图10.9所示,TCP协议位于网络互联层后,是IP协议的上层协议。......
2023-11-19
图8.4socket套接字发送、接收数据示意图2.套接字缓冲区的特性◆缓冲区在每个TCP套接字中单独存在;◆I/O缓冲区在创建套接字时自动生成;◆即使关闭套接字也会继续传送输出缓冲区中遗留的数据;◆关闭套接字将丢失输入缓冲区中的数据。......
2023-11-19
ARM微处理器已经遍及工业控制、消费类电子通信系统、网络系统、无线系统各类产品市场,基于ARM技术的微处理器应用占据了32位RISC微处理器80%以上的市场份额。ARM嵌入式技术在联网方面的优势,为弧焊电源实现网络化控制奠定了基础。ARM9可以达到180~200MHz的工作速率,它能驱动的周边装置比ARM7多,应用范围也比较广。ATMEL公司的AT91AM9200是基于ARM9的,具有丰富的接口功能。ARM芯片通信接口能力强,一般用于焊接过程及设备人机界面系统的核心芯片。......
2023-06-26
Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器,Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。图11.2W eb服务器工作原理图我们以浏览器作为客户端,完成Web服务的工作流程讲述。Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。......
2023-11-19
S5PV210处理器中采用的是异步串行通信方式。异步串行通信通常以字符为单位组成字符帧传送。在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。......
2023-11-19
编译完成程序后,在工程可执行程序所在文件夹下双击hello程序出现Qt版Hello World程序界面,整个Qt应用程序窗体都被一个按钮覆盖,这是程序第13行设置窗体主控件的结果。用户单击按钮后没有任何反映,这是由于没有添加QPushButton的处理函数,系统默认不做任何处理。文本界面风格的Hello World程序修改后的Hello World程序上述程序实例展示了QLabel组件的功能。Qt支持字符串使用HTML语法格式描述,Qt会解释HTML语法的含义并且显示正确的结果。......
2023-11-19
嵌入式系统的发展大致经历了嵌入式微控制器、嵌入式微处理器和嵌入式数字信号处理器、嵌入式片上系统和以Internet为标志的嵌入式系统等阶段。嵌入式系统的出现最初是基于单片机的,这一阶段的嵌入式系统硬件是单片机,软件停留在无操作系统阶段,采用汇编语言实现系统的功能。第四阶段是以Internet为标志的嵌入式系统。......
2023-11-19
Bootloader是具有引导功能的程序,在嵌入式系统中,Bootloader是系统加电后运行的第一段代码。Bootloader运行在内核之前,其作用是进行基本的初始化工作。图6.13Linux系统的典型分区结构BootLoader是严重地依赖于硬件而实现的,其任务可以划分为两个阶段:第一阶段●基本硬件设备初始化;●为第二阶段准备RAM空间;●复制Bootloader的第二阶段代码到RAM;●设置堆栈;●跳转到第二阶段的C程序入口点。......
2023-11-19
相关推荐