图8.4socket套接字发送、接收数据示意图2.套接字缓冲区的特性◆缓冲区在每个TCP套接字中单独存在;◆I/O缓冲区在创建套接字时自动生成;◆即使关闭套接字也会继续传送输出缓冲区中遗留的数据;◆关闭套接字将丢失输入缓冲区中的数据。......
2023-11-19
在Linux下使用socket()函数来创建套接字,其函数原型为:
int socket(int af,int type,int protocol);
各参数含义如下。
1.af(Address Fam ily)为地址族
地址族也就是IP地址类型,常用的有AF_INET和AF_INET6。AF是“Address Family”的简写,INET是“Inetnet”的简写。AF_INET表示IPv4地址;AF_INET6表示IPv6地址。
也可以使用PF(Protocol Family)协议族,它和AF是一样的。例如,PF_INET等价于AF_INET,PF_INET6等价于AF_INET6。
常见的协议族如下。
◆PF_UNIX,PF_LOCAL:用于本地进程间通信;
◆PF_INET:IPv4协议;
◆PF_INET6:IPv6协议;
◆PF_NETLINK:用于内核与应用程序通信;
◆PF_PACKET:用于访问底层数据。
2.type为数据传输方式/套接字类型
常用的有SOCK_STREAM(流格式套接字/面向连接的套接字)、SOCK_DGRAM(数据报套接字/无连接的套接字)和SOCK_RAW(原始类型)。
SOCK_STREAM是一种可靠的、双向的通信数据流,数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送,有自己的纠错机制。
SOCK_STREAM有以下几个特征:
◆数据在传输过程中不会消失;
◆数据是按照顺序传输的;
◆数据的发送和接收不是同步的(有的教程也称“不存在数据边界”)。(www.chuimin.cn)
SOCK_DGRAM也叫“无连接的套接字”。这种套接字计算机只管传输数据,不作数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的。也就是说,数据没有纠错机制,也无法重传。
SOCK_DGRAM有以下几个特征:
◆强调快速传输而非传输顺序;
◆传输的数据可能丢失也可能损毁;
◆限制每次传输的数据大小;
◆数据的发送和接收是同步的。
SOCK_RAW是原始类型,这种类型可以访问底层的原始数据。
不同的协议族可以支持不同的socket类型,相同的socket建立在不同的协议族上,其功能也是不同的,表8.1所示常见协议族与socket类型组合及实际作用。
表8.1 协议族与socket类型
续表
3.protocol表示传输协议
常用的有IPPROTO_TCP和IPPTOTO_UDP,分别表示TCP传输协议和UDP传输协议。
当协议族为PF_INET,socket类型采取SOCK_STREAM时,一定使用TCP协议;socket类型采取SOCK_DGRAM时,一定使用UDP协议。在这种情况下,protocol参数可取0。因此可通过如下方法创建TCP套接字和UDP套接字。
int socket=socket(AF_INET,SOCK_STREAM,0);//创建TCP套接字
int socket=socket(AF_INET,SOCK_DGRAM,0);//创建UDP套接字
有关ARM嵌入式系统原理与应用的文章
图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
编译完成程序后,在工程可执行程序所在文件夹下双击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
在PDA类的设备中,系统在全速运行的时候远比空闲的时候少,所以可以通过设置,使CPU尽可能工作在空闲状态,然后通过相应的中断唤醒CPU,恢复到正常工作模式,处理响应的事件,然后再进入空闲模式。CPU空闲时,降低时钟频率;处于工作状态时,提高时钟频率以全速运行处理事务。......
2023-11-08
相关推荐