文件是Linux系统处理数据的基本单位,实际上,Linux系统所有的数据以及其他实体都是按照文件组织的。shell程序使用文件名通配符可以查询符合指定条件的文件名。......
2025-09-30
网络通信时必须明确通信双方地址,而一个socke地址可以唯一表示一个通信端点,因此在通信前需进行socket地址绑定。服务器端要用bind()函数将套接字与特定的IP地址和端口绑定起来。类似地,客户端也要用connect()函数建立连接。
Linux下bind()函数的原型为:
int bind(int sock,struct sockaddraddr,socklen_t addrlen);
sock为socket文件描述符,addr为sockaddr结构体变量的指针,addrlen为addr变量的大小,可由sizeof()计算得出。
通常在服务器端地址绑定的代码如下:
(https://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绑定在同一端口上不会冲突。
相关文章
文件是Linux系统处理数据的基本单位,实际上,Linux系统所有的数据以及其他实体都是按照文件组织的。shell程序使用文件名通配符可以查询符合指定条件的文件名。......
2025-09-30
Linux系统中在访问文件和目录之前需要获取相应权限。图7.2Linux文件权限文件或目录的权限又分为3种:只读、只写、可执行,如表7.1所示。表7.1Linux文件权限表目录和文件访问权限的含义有所不同,区别如下:文件存取权限:读权限仅允许用户读取文件内容而无法进行其他操作;写权限允许用户修改文件内容;执行权限允许文件作为一个可执行程序运行。表示将/home/test01文件修改为所有用户具备执行权限。......
2025-09-30
每个GPIO端口至少需要两个寄存器,一个是用于控制的“通用I/O端口控制寄存器”,一个是存放数据的“通用I/O端口数据寄存器”。控制和数据寄存器的每一位和GPIO的硬件引脚相对应,由控制寄存器设置每一个引脚的数据流向,数据寄存器设置引脚输出的高低电平或读取引脚上的电平。S5PV210共有237个GPIO端口,分成15组。GPP1:低功率I2S、PCM。GPIO的15组引脚除了作为输入、输出引脚外,一般都还有其他功能,称为引脚复用。图4.6GPIO端口功能框图......
2025-09-30
嵌入式系统目前已在军事装备、工业制造与过程控制、通信、机器人、仪器与仪表、汽车、船舶、交通管理、信息家电及家庭智能管理、消费类产品各领域普及应用,具有广阔的发展前景。在这些设备中,嵌入式系统将大有用武之地。在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。在很多环境恶劣,地况复杂的地区,嵌入式系统将实现无人监测。......
2025-09-30
S5PV210处理器中采用的是异步串行通信方式。异步串行通信通常以字符为单位组成字符帧传送。在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。......
2025-09-30
嵌入式系统设计与开发工作中,软件工作量约占全部工作量的80%,其中测试和验证部分的工作量占软件工作量的70%。图1.6嵌入式系统设计与开发流程1.需求分析分析用户的需求:产品的功能、性能、价格、体积、功耗等。嵌入式系统(实现)编程:选择硬件、操作系统、编程语言以及开发工具,编写程序。......
2025-09-30
Linux软件开发一直在Internet环境下讲行。Linux开发工作经常是在Linux用户决定共同完成一个项目时开始的。由于这个活跃的开发环境,新的以Linux为基础的软件功能日益强大,而且呈现爆炸式的增长态势。许多流行的Linux实用程序如C编译器、shell和编辑器都是GNU软件应用程序。Linux程序需要首先转化为低级机器语言即所谓的二进制代码以后,才能被操作系统执行。......
2025-09-30
2.开发模式嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。表1.2常用嵌入式开发工具......
2025-09-30
相关推荐