阅读以下说明和Socket程序,根据要求将程序代码中(1)~(10)空缺处的内容填写完整。
【说明】
网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色,分别是客户机和服务器。
一般发起通信请求的应用程序称为客户软件,该应用程序通过与服务器进程建立连接来发送请求,然后等待服务器返回所请求的内容。服务器软件一般是指等待接收并处理客户机请求的应用程序,通常由系统执行,等待客户机请求,并且在接收到请求之后,根据请求的内容,向客户机返回合适内容。
本题中的程序较为简单,客户机接收用户在键盘上输入的文字内容,服务器将客户机发送来的文字内容直接返回给客户机,在通信过程中服务器方和客户机方都遵守的通信协议如下:
由客户机首先发送请求,该请求由首部和内容两大部分组成,两个部分各占一行文字,通过行结束符'\n'隔离。
首部只有一个Length域,用于指定请求的内容部分的长度,首部的结构为
'关键词Length'+' '+数值+'\n'
内容部分为一行文字,其长度必须与Length域的数值相符。
例如,客户机的请求为“Length 14\n hello,welcome to my home!”,服务器接收请求处理后返回文字“Hello,welcome to my home!”。
【Socket程序】
//服务器主程序部分
#include<stdio.h>
…… //引用头文件部分略
#define SERVER_PORT 8080 //服务器监听端口号为8080
#define BACKLOG 5 //连接请求队列长度
int main(int argc,char *argv[ ])
{
int listenfd,connfd; //监听套接字、连接套接字描述符
struct sockaddr_in servaddr; //服务器监听地址
listenfd= (1) , //创建用于监听的套接字
if(listenfd<0)
{
fprintf(stderr,"创建套接字错误!") //套接字创建失败时打印错误信息
exit(1);
}
bzero(&servaddr.sizeof(servadd)); //将地址结构置空
servaddr.sin_family=AF_INET; //设置地址结构遵循TCP/IP协议
servaddr.sin_addrs_addr=htonl. (2)
//设置监听的IP地址为任意合法地址,并将该地址转换为网络字节顺序
servaddr.sin_port=(3); //设置监听的端口,并转化为网络字节顺序
if(bind((4))<0)
{
fprintf(stderr,"绑定套接字与地址!"),
exit(1);
} //将监听地址与用于监听的套接字绑定,绑定失败时打印错误信息
if(listen(listedfd,BACKLOG)<0)
{
fprintf(stderr,"转换套接字为监听套接字!");
exit(1);
} //将用于监听的套接字由普通套接字转化为监听套接字
for(;;)
{
connfd=(5);
//从监听套接字的连接队列中接收已经完成的连接并创建新的连接套接字
if(connfd<0)
{
fprintf(stderr,"接收连接失败!");
exit(1);
}//接收失败打印错误信息
serv_respon(connfd); //运行服务器的处理函数
(6); //关闭连接套接字
}
close(listenfd); //关闭监听套接字
}
//服务器通信部分
#include<stdio.h>
…… //引用头文件部分略
void serv_respon(int sockfd)
{
int nbytes;
char buf[1024]
for(;;)
{
nbytes=read_requ(sockfd,buf,1024);
//读出客户机发出的请求,并分析其中的协议结构,获知请求的内
//部分的长度,并将内容复制到缓冲区buf中
if(nbytes==0)
&
在图6-10所示的网络结构中,每一个网络节点相对于CAN控制器而言,有一个隐含的CAN总线接口通信模块,上电后能自动完成接口的初始化工作,并进入通信监测工作状态。请在150字以内简要列出每一个网络节点中至少还应当包括哪些功能模块。
MCP2510和TJA1050连接的两个信号都是单向信号。在图6-11所示的电路图中, MCP2510芯片输入信号即RXCAN高电平的范围Vih是2~4.3 V。这并不能满足5 V逻辑的TJA1050芯片的输出电平,因此需要进行I/O接口电路的电平转换。在图6-1l所示的电路图中,电阻SR10、SR11的阻值在选择时需要考虑哪些因素?
阅读以下关于CAN现场总线嵌入式监控系统的技术说明,根据要求回答问题1至问题5。
[说明]
某自动化仪表企业正在研究使用现场总线网络构成自动监测系统的可行性,打算采用 CAN(Controller Area Network,控制器局域网络)总线作为底层网络构件系统。该企业试验用的数据采集与监测系统的网络结构如图6-10所示。
在图6-10网络结构中,系统主控机可有一台或多台,相当于上位机,负责系统的总体管理,可以向网络节点发送命令,接受节点数据,进行存储、分析、统计、显示与打印等工作。在系统主控机内装有PCCAN网卡(CAN总线通信接口适配卡)。系统主控机中具有以下几种软件模块:
(1)初始化模块。该模块用来设置CAN网络通信速率、输出控制方式、报文标识符屏蔽格式等参数,设定各节点工作空间的位置与规模,初始化节点缓冲区域的缓冲文件等。
(2)采集节点信息与数据模块。该模块可以采用指定节点发送、由节点主动发送和自动轮询采集等多种方式,并可以统计与分析数据采集的进度与状态。
(3)向节点发送参数、命令或程序模块。
(4)数据统计分析模块。
(5)系统管理模块。
图6-10所示的网络结构中有12个网络节点,每一节点都通过传感器采集现场的有关数据。在每一节点电路中都配置了MCP2510 CAN控制器和TJA1050总线收发器,其接口电路如图6-11所示。系统主控机与网络节点采用双绞线连接,实验时最大节点间的距离为35 m。
CAN总线能够使用光纤和(1)等多种传输媒体。总线信号以差分电压传送,两条信号线分别为CAN_H和CAN_L。静态时这两条信号线均为2.5 V,此状态表示(2),也可以称之为“隐性”。CAN_H比CAN_L高,表示逻辑“0”(或称为“显性”),此时,通常电压值为CAN_H=3.5 V,CAN_L=1.5 V。当“显性”位和“隐性”位同时发送时,最后总线数据将为(3)。
CAN现场总线具有如下基本特征:
①CAN总线是一种多主方式的串行通信总线,当CAN信号传输距离在40 m以内时,其最高通信速率为1 Mb/s,当信号传输距离在10 km以内时,CAN总线仍可提供 50kb/s的数据传输速率。网络上节点的数目主要取决于总线驱动电路,目前可达110个节点。
②通信的灵活性。CAN总线允许采用多主方式工作,网上任一节点均可在任何时刻主动向网上其他节点发送信息(不分主从),无需站地址等节点信息。事实上,通信取决于报文标识符进行(在CAN2.0A标准中规定了2032种报文标识符),采用报文滤波即可实现点到点、一点到多点或者全广播等多种方式通信,无需专门调度。
③通信的实时性。CAN网络上节点的信息可分为不同的优先级,从而能满足不同的实时性要求。
④通信的可靠性。CAN采用了非破坏性的总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,具有相对最高优先级的节点可以不受影响地继续传输数据,从而大大节省了总线仲裁时间,特别是在网络负荷很重的情况下也不会引起网络瘫痪。另一方面,CAN协议规定了采用短帧结构(比如一个数据帧内有效数据为8个字节),帧传输时间短,抗电磁干扰能力强。每帧内有CRC校验及其他校验措施(适用于位数小于127位的帧)。当节点发现严重错误时,能自动关闭输出,使其他节点操作不受影响。
基于以上基本特征,请估算具有最高优先权的数据帧最快可在多长时间内获得传输权限。请在150字以内简要说明理由并列出计算过程。
在图6-11所示的电路图中,MCP2510芯片组成的CAN控制器和TJA1050芯片所组成的电路各有何作用。
在该水电站安全监测系统中,数据采集任务(Collect_task)把所采集的数据送入一单缓冲区,计算任务(Calculate_task)从该单缓冲区中取出数据进行计算。以下是利用信号量机制实现两个任务共享单缓冲区的C语言形式化描述程序。请将程序代码中(6)~(9)空缺处以及(10)空缺处的内容填写完整。
int sr=0'
int (6) :
main()
{
cobegin
Collect_task();
Calculate_task();
coend
}
Collect_task()
{
While(采集工作未完成)
{
采集一个数据,
P(se),
将数据送入缓冲区中:
(7) ,
}
}
Calculate_task()
{
While(计算工作未完成)
{
(8) ,
从缓冲区中取出数据:
(9)
进行数据计算送入缓冲区中,
}
}
如果以上程序中“int sf=0;”语句不小心被改写成“ints{=-1;”,那么系统运行时将会进入 (10) 状态。
阅读以下说明和Socket程序,根据要求将程序代码中(1)~(10)空缺处的内容填写完整。
【说明】
网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色,分别是客户机和服务器。
一般发起通信请求的应用程序称为客户软件,该应用程序通过与服务器进程建立连接来发送请求,然后等待服务器返回所请求的内容。服务器软件一般是指等待接收并处理客户机请求的应用程序,通常由系统执行,等待客户机请求,并且在接收到请求之后,根据请求的内容,向客户机返回合适内容。
本题中的程序较为简单,客户机接收用户在键盘上输入的文字内容,服务器将客户机发送来的文字内容直接返回给客户机,在通信过程中服务器方和客户机方都遵守的通信协议如下:
由客户机首先发送请求,该请求由首部和内容两大部分组成,两个部分各占一行文字,通过行结束符'\n'隔离。
首部只有一个Length域,用于指定请求的内容部分的长度,首部的结构为
'关键词Length'+' '+数值+'\n'
内容部分为一行文字,其长度必须与Length域的数值相符。
例如,客户机的请求为“Length 14\n hello,welcome to my home!”,服务器接收请求处理后返回文字“Hello,welcome to my home!”。
【Socket程序】
//服务器主程序部分
#include<stdio.h>
…… //引用头文件部分略
#define SERVER_PORT 8080 //服务器监听端口号为8080
#define BACKLOG 5 //连接请求队列长度
int main(int argc,char *argv[ ])
{
int listenfd,connfd; //监听套接字、连接套接字描述符
struct sockaddr_in servaddr; //服务器监听地址
listenfd= (1) , //创建用于监听的套接字
if(listenfd<0)
{
fprintf(stderr,"创建套接字错误!") //套接字创建失败时打印错误信息
exit(1);
}
bzero(&servaddr.sizeof(servadd)); //将地址结构置空
servaddr.sin_family=AF_INET; //设置地址结构遵循TCP/IP协议
servaddr.sin_addrs_addr=htonl. (2)
//设置监听的IP地址为任意合法地址,并将该地址转换为网络字节顺序
servaddr.sin_port=(3); //设置监听的端口,并转化为网络字节顺序
if(bind((4))<0)
{
fprintf(stderr,"绑定套接字与地址!"),
exit(1);
} //将监听地址与用于监听的套接字绑定,绑定失败时打印错误信息
if(listen(listedfd,BACKLOG)<0)
{
fprintf(stderr,"转换套接字为监听套接字!");
exit(1);
} //将用于监听的套接字由普通套接字转化为监听套接字
for(;;)
{
connfd=(5);
//从监听套接字的连接队列中接收已经完成的连接并创建新的连接套接字
if(connfd<0)
{
fprintf(stderr,"接收连接失败!");
exit(1);
}//接收失败打印错误信息
serv_respon(connfd); //运行服务器的处理函数
(6); //关闭连接套接字
}
close(listenfd); //关闭监听套接字
}
//服务器通信部分
#include<stdio.h>
…… //引用头文件部分略
void serv_respon(int sockfd)
{
int nbytes;
char buf[1024]
for(;;)
{
nbytes=read_requ(sockfd,buf,1024);
//读出客户机发出的请求,并分析其中的协议结构,获知请求的内
//部分的长度,并将内容复制到缓冲区buf中
if(nbytes==0)
&
设计简化的多任务嵌入式实时操作系统时,由于多个任务均可能要求占用CPU这个关键资源,因此CPU的任务管理是一个非常重要的设计内容。在该嵌入式实时操作系统中,作为占用资源的基本单位,任务总共有五个状态,分别是休眠状态、就绪状态、运行状态、等待状态和延时等待状态。在任何时候,一个任务只会处于其中的某一个状态。请根据图6-8中已给出的信息将(1)~(5)空缺处填写完整。
阅读以下关于嵌入式系统技术的说明,根据要求回答问题1至问题3。
[说明]
某水电站根据安全监控的需要决定采用嵌入式工控微机进行实时多任务安全监测。该系统有32路模拟量输入、96路开关量、16路脉冲量输入和水位落差量输入,产生显示信息、报警信号、监测报表和水位传感器控制信号等输出。该水电站安全监测系统具有以下几个特点:
(1)对各种模拟量、开关量、脉冲量、水位落差量等数据量的监测,事实上只是周期性地重复执行相应的各个任务模块。
(2)监视的对象比较固定,系统硬件的规模相对固定不变。
(3)尽可能允许把所有软件都固化在EPROM中。
(4)人机交互作用的内容固定,即由操作人员通过键盘去调用此系统中所存入的相应应用程序,不会去修改应用程序。
基于以上安全监测系统的特点,该水电站技术研发部门准备选用现有的工业控制机系统及现成的各种模板等硬件,由本部门的开发人员自行开发软件。所开发的软件主要包括:
(1)应用程序,即按各类输入/输出量的采集、处理、显示、报警和制表等功能分别作为若干任务块,由这些任务组成应用程序。
(2)多任务嵌入式实时操作系统,用来协调各任务的资源分配与管理,管理任务之间的联系与多任务操作。
根据以上安全监测系统的特点,技术研发人员郭工程师提出了一个自行编制简化“多任务嵌入式实时操作系统”的方案,以适应于协调管理硬件资源和监测对象的实际需求,其中只保留了标准的多任务实时操作系统的核心功能,例如CPU管理、中断管理和外设管理等。请在200字以内简要说明郭工程师提出的简化的“多任务嵌入式实时操作系统”可能具有哪些优点。
修改在住宅安全系统第0层数据流图(图6-20)中的数据存储“配置信息”,将会影响第0层数据流图中的哪些加工?
高级经济师考试试题精选练习(1)
高级经济师考试模拟练习题之单选题(1
高级经济师考试试题精选练习(2)
高级经济师考试试题精选练习(3)
高级经济师考试试题:经济法案例试题精
高级经济师考试模拟试题及答案
高级经济师考试试题及答案:单选练习题
高级经济师考试试题:经济法案例试题精
高级经济师考试模拟题及答案练习(1)
高级经济师考试模拟题及答案练习(2)