图8.4socket套接字发送、接收数据示意图2.套接字缓冲区的特性◆缓冲区在每个TCP套接字中单独存在;◆I/O缓冲区在创建套接字时自动生成;◆即使关闭套接字也会继续传送输出缓冲区中遗留的数据;◆关闭套接字将丢失输入缓冲区中的数据。......
2023-11-19
网络通信时必须明确通信双方地址,而一个socke地址可以唯一表示一个通信端点,因此在通信前需进行socket地址绑定。服务器端要用bind()函数将套接字与特定的IP地址和端口绑定起来。类似地,客户端也要用connect()函数建立连接。
Linux下bind()函数的原型为:
int bind(int sock,struct sockaddr*addr,socklen_t addrlen);
sock为socket文件描述符,addr为sockaddr结构体变量的指针,addrlen为addr变量的大小,可由sizeof()计算得出。
通常在服务器端地址绑定的代码如下:
(www.chuimin.cn)
bind()第二个参数的类型为sockaddr,而代码中却使用sockaddr_in,然后再强制转换为sockaddr。这是为何?首先对比一下sockaddr_in与sockaddr结构体,如图8.3所示。
图8.3 sockaddr_in与sockaddr结构体对比
从图8.3看出,sockaddr和sockaddr_in的长度相同,都是16字节,只是在sockaddr结构体中将IP地址和端口号合并到一起,用一个数组成员sa_data表示。要想给sa_data赋值,必须同时指明IP地址和端口号,例如“192.168.0.1:80”,遗憾的是,没有相关函数将这个字符串转换成需要的形式,也就很难给sockaddr类型的变量赋值,因此使用sockaddr_in来代替。这两个结构体的长度相同,强制转换类型时不会丢失字节,也没有多余的字节。
这里需要注意的是SOCK_STREAM和SOCK_DGRAM类型的socket各有自己的端口空间,两个不同类型的socket绑定在同一端口上不会冲突。
有关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
2.开发模式嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。表1.2常用嵌入式开发工具......
2023-11-19
Linux软件开发一直在Internet环境下讲行。Linux开发工作经常是在Linux用户决定共同完成一个项目时开始的。由于这个活跃的开发环境,新的以Linux为基础的软件功能日益强大,而且呈现爆炸式的增长态势。许多流行的Linux实用程序如C编译器、shell和编辑器都是GNU软件应用程序。Linux程序需要首先转化为低级机器语言即所谓的二进制代码以后,才能被操作系统执行。......
2023-11-19
Linux系统中在访问文件和目录之前需要获取相应权限。图7.2Linux文件权限文件或目录的权限又分为3种:只读、只写、可执行,如表7.1所示。表7.1Linux文件权限表目录和文件访问权限的含义有所不同,区别如下:文件存取权限:读权限仅允许用户读取文件内容而无法进行其他操作;写权限允许用户修改文件内容;执行权限允许文件作为一个可执行程序运行。表示将/home/test01文件修改为所有用户具备执行权限。......
2023-11-19
具体来说,嵌入式系统是以应用为中心、计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。表1.1对比了通用计算机系统与嵌入式系统。......
2023-11-19
互联网采用TCP/IP协议并不是ISO规定的标准协议,但是作为应用最广泛的协议已经成为大规模网络通信的事实标准。TCP/IP协议实际上是由一组协议组成的,通常也称作TCP/IP协议簇。图10.10IPv4协议头部从图中可以看出这是个复杂的结构,最常用字段是源地址和目的地址,用来寻址和查路由。如图10.9所示,TCP协议位于网络互联层后,是IP协议的上层协议。......
2023-11-19
每个GPIO端口至少需要两个寄存器,一个是用于控制的“通用I/O端口控制寄存器”,一个是存放数据的“通用I/O端口数据寄存器”。控制和数据寄存器的每一位和GPIO的硬件引脚相对应,由控制寄存器设置每一个引脚的数据流向,数据寄存器设置引脚输出的高低电平或读取引脚上的电平。S5PV210共有237个GPIO端口,分成15组。GPP1:低功率I2S、PCM。GPIO的15组引脚除了作为输入、输出引脚外,一般都还有其他功能,称为引脚复用。图4.6GPIO端口功能框图......
2023-11-19
相关推荐