重要提示:请勿将账号共享给其他人使用,违者账号将被封禁!
查看《购买须知》>>>
首页 > 软考
网友您好,请在下方输入框内输入要搜索的题目:
搜题
拍照、语音搜题,请扫码下载APP
扫一扫 下载APP
题目内容 (请给出正确答案)
[主观题]

● 试题二 请阅读以下说明和Socket程序,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 网

● 试题二

请阅读以下说明和Socket程序,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。

一般发起通信请求的应用程序称为客户软件,该应用程序通过与服务器进程建立连接,发送请求,然后等待服务器返回所请求的内容。服务器软件一般是指等待接收并处理客户机请求的应用程序,通常由系统执行,等待客户机请求,并且在接收到请求之后,根据请求的内容,向客户机返回合适的内容。

本题中的程序较为简单,客户机接收用户在键盘上输入的文字内容,服务器将客户机发送来的文字内容直接返回给客户机,在通信过程中服务器方和客户机方都遵守的通信协议如下:

由客户机首先发送请求,该请求由首部和内容两大部分组成,两个部分各占一行文字,通过行结束符"\n"隔离。

首部只有一个Length域,用于指定请求的内容部分的长度,首部的结构为:"关键词Length"+""+数值+"\n"。

内容部分为一行文字,其长度必须与Length域的数值相符例如,客户机的请求为"Length 14\nHello,my baby!",服务器接收请求处理后返回文字"Hello,my baby!"。

【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);//运行服务器的处理函数

close(connfd);//关闭连接套接字}

dose(listenfd);//关闭监听套接字}

服务器通信部分:

#include<stdio.h>

< ……//引用头文件部分略>

void serv_respon(int sockfd){

int nbytes;char bur[1024];

for(;;){

nbytes=read_requ(sockfd,bur,1024);

//读出客户机发出的请求,并分析其中的协议结构,获知请求的内容部分的长度,并将内容复制到缓冲区buf中,

if((6) )return;//如客户机结束发送就退出

else if(bytes<0){

fprintf(siderr,"读错误情息:%s\n",strerror(errno));

return;

} //读请求错误打印错误信息

if(write-all(sockfd,buf,nbytes)<0)

//将请求中的内容部分反向发送回客户机

fprintf(siderr,"写错误信息:%s\n",strerror(errno));

}

}

int read_requ(int sockfd,char*buf int size){

char inbuf[256];

int n;int i;

i=read_line(sockfd,inbuf,256);

//从套接字接收缓冲区中读出一行数据,该数据为客户请求的首部

if(1<O)return(i);

else if(i==0)return(0);

if(stmcmp(inbuf,″″,6)==0)

scanf((7) ,″%d″,&n); //从缓冲区buf中读出长度信息

else{

sprintf(bur,″″,14);

return (14) ;

} //取出首部Length域中的数值,该数值为内容部分的长度

return(read-all(sockfd,bur,n));//从接收缓冲区中读出请求的内容部分

}

int get-char(int fd,char*ch){

static int ffset=0;

static int size=0;

static char buff[1024];

//声明静态变量,在get_char多次被调用期间,该变量的内存不释放

for(;size<=0 | | (8) ;){

size=read(fd,bur,1024);//一次从套接字缓冲区中读出一个数据块

if(size<0){

if(errno==EINTR){

size=0;

contine;

//EINTR表示本次读操作没有成功,但可以继续使用该套接字读出数i

}else

return(-1);

}

offset=0; //读出数据后,将偏址置为0

*ch=buf[offset ++]; //将当前的字符取出,并将偏址移向下一字符

return (1) ;

}

int read _ line(int fd,char*buf,int msxlen){

int i, n;

char ch;

for(i=0;i< (9) ){

n=get_char(fd,&ch);//取出一个字符

if(n==1){

buff[i++]=ch;//将字符加入字符串中

if((10) )break;

}else if(n<)return(-1);

else break;

}

buf[i]=`\0`;

return(i);

}

//函数read_line的作用是读出请求的首部,其处理的方法是每次调用get_char函数,取出一个字符,检查该字符是否是回车符`\n`,如果是回车符,就返回请求的首部

//get_char的处理方式较为特殊,并不是每次调用read函数读一个字符,而是一次从缓冲区中读一块内容,再一次一个字符提交给函数read_line,如果提交完了就再读一块,这样就可以提高读缓冲区的效率。另外,由于客户机是分两次调用writ_all函数将请求的首部和内容发送给服务器,因此get_char不会取出请求内容部分的字符

部分SOCKET数据结构与函数:

1.地址结构。

sockaddr-in:

sockaddr_in类型的结构定义,sockaddr_in是通用套接字结构sockaddr在TCP/IP协议下的结构重定义,为TCP/IP套接字地址结构。

Struct sockaddr_in{

short int sin_family;//地址类型AF_XXX,其中AF_INET为TCP/IP专用

unsigned short int sin _port;//端口号

struct in_addr sin_addr;//Internet地址

//端口号以及Internet地址使用的是网络字节顺序,需要通过函数htons转换

}

struct_inaddr{

_u32 s_addr;//类型为unsignel long

}

hostent:

hostent类型的结构定义

struct hostnet{

char*h_name;//主机的正式名称

char**h_aliases;//别名列表

nit h_addrtvPe;//主机地址类型:AF_XXX

int h_length;//主机地址长度:4字节(32位)

char**h_addr_list;//主机IP地址列表

}

#define h_addr h_addr_list[0]

2.基本函数。

int socket(int domain,int type,int protocol);

函数socket创建一个套接字描述符,如果失败则返回-1。domain为地址类型,type为套接字类型,本题中为SOCK_STREAM;protocol指定协议,本题中为0。

int connect(int sockfd,struct sockaddr*servaddr,int addrlen);

函数connect与服务器建立一个连接,成功返回0,失败返回-1。servaddr为远程服务器的套接字地址,包括服务器的IP地址和端口号;addrlen为地址的长度。

int read(int fd,char*bur,int len);

int write(int fd,char*buf,int len);

函数read和write从套接字读和写数据,成功返回数据量大小,否则返回-1。buf指定数据缓冲区,len指定接收或发送的数据量大小。

int bind(int sockfd,struct sockaddr*myaddr,int addrlen);

函数bind将本地地址与套接字绑定在一起,成功返回0,否则返回-1;myaddr是本机地址;addrlen为套接字地址结构的长度。

int listen(int sockfd,int backlog);

函数listen将一个套接字转换为倾听套接字,成功返回0,否则返回-1;backlog为请求队列的最大长度。

int accept(int sockfd,struct sockaddr*addr,int*addrlen);

函数accept从倾听套接字的完成连接中接收一个连接,如果完成连接队列为空,那么这个进程睡眠,失败时返回-1,成功时返回新的套接字描述符。Sockfd为倾听套接字,addr为客户机的地址,addlen为地址长度,在调用时用常量NULL代替addr与addlen表示无须取出客户机的地址信息

struct hostent *gethostbyname(const char*hostname);

函数gethostbyname查询指定的域名地址对应的IP地址,返回一个hostent结构的指针,如果不成功返回NULL。

3.用户自定义函数。

int read_all(int fd,void*bur,int nbyte);

函数read all从参数fd指定的套接字描述符中读取nbytes字节数据至缓冲区buf中,成功返回实际读的字节数(可能小于nbyte),失败返回-1。

int write_all(int fd,void*bur,int nbyte);

函数write_all向参数fd指定的套接字描述符中写入缓冲区buf前nbyte字节的数据,成功返回实际写的字节数(始终等于nbyte),失败返回-1。

write_requ函数为客户机发送请求的函数;read_requ函数为服务器获取请求的函数。

答案
查看答案
更多“● 试题二 请阅读以下说明和Socket程序,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 网”相关的问题

第1题

试题二、阅读以下关于项目成本/效益分析的说明,根据要求回答问题下面问题。[说明]某软件公司准备开

试题二、阅读以下关于项目成本/效益分析的说明,根据要求回答问题下面问题。

[说明]

某软件公司准备开发一套建筑施工项目管理软件,该软件应具有项目管理计划的编制及项目的动态管理功能,其生存周期为5年。该系统的预计开发成本、预计的年运行/维护成本,以及预计的收益如表3-14所示(其中带括号的数据表示负值)。

试题二、阅读以下关于项目成本/效益分析的说明,根据要求回答问题下面问题。[说明]某软件公司准备开试题

根据表3-14给出的数据,计算2013年的贴现系数、收益净现值和成本净现值。请给出简要的计算过程。

点击查看答案

第2题

●试题二 [说明]阅读以下资料,回答问题。 在Windows Server 2003环境中设置一个用于匿名访问的WW

●试题二

[说明]阅读以下资料,回答问题。

在Windows Server 2003环境中设置一个用于匿名访问的WWW服务器。需要安装Internet信息服务。Microsoft Internet信息服务(ΠS)是与Windows Server 2003集成的Web服务。

[问题1]

要安装ΠS、添加可选组件或删除可选组件,请写出操作步骤。

[问题2]

请写出配置匿名身份验证的操作步骤。

[问题3]

请写出配置基本Web站点的步骤。

[问题4]

通过配置某个特定站点上的网络带宽,可以更好地控制该站点的通信量,如何设置?

点击查看答案

第3题

试题二 阅读以下关于项目质量管理的案例说明,根据要求回答问题1~问题3。 [说明] 某系统集成公

试题二

阅读以下关于项目质量管理的案例说明,根据要求回答问题1~问题3。

[说明]

某系统集成公司中标了某大型餐饮连锁企业集团的信息系统项目,该项目包含单店管理、物流系统和集团ERP等若干子项目。由该系统集成公司的项目经理老林全面负责项目实施。老林认为此项目质量管理的关键在于系统地进行测试。

老林制订了详细的测试计划用来管理项目的质量。在项目实施过程中,他通过定期发给客户测试报告来证明项目质量是有保证的。可是客户总觉得有什么地方不对劲,对项目的质量还是没有信心。

1. 结合你的项目管理经验,简要分析客户对项目的质量没有信心的可能原因。

点击查看答案

第4题

试题二(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。【说明】 公司A网

试题二(共15分)

阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。

【说明】

公司A网络拓扑结构如图2-1所示,其中FTP_server是在Windows Server 2003操作系统中配置的FIP服务器,仅供公司内部主机访问。

试题二(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。【说明】 公司

【问题1】

图2-2是配置FTP服务时的FTP站点选项卡,“IP地址”栏的值为 (1);TCP端口默认值为(2)。

若要利用访问情况来分析非法行为,在图2-2中应如何配置?

试题二(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。【说明】 公司

【问题2】

图2-3是配置FTP服务时的主目录选项卡,“本地路径”栏的信息默认为(3)。

试题二(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。【说明】 公司

【问题3】

图2-4是配置FTP服务时的目录安全性选项卡,选中“拒绝访问”单选框,点击“添加”按钮,弹出图2-5所示的窗体,“网络标识”栏应填入(4),“子网掩码”栏应填入(5)。

试题二(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。【说明】 公司

【问题4】

根据图2-3,在FTP服务器配置完成后,网络管理员要添加可供下载的资料,该如何操作?

点击查看答案

第5题

试题二(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。 【说明】 Linux

试题二(共15分)

阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。

【说明】

Linux系统有其独特的文件系统ext2,文件系统包括了文件的组织结构、处理文件的数据结构及操作文件的方法。可通过命令获取系统及磁盘分区状态信息,并能对其进行管理。

【问题1】(6分)

以下命令中,改变文件所属群组的命令是__ (1) ,编辑文件的命令是 (2) ,查找文件的命令是(3)

(1)~(3)备选答案:

A. chmod B. chgrp C.vi D. which

【问题2】(2分)

在Linux中,伪文件系统(4)只存在于内存中,通过它可以改变内核的某些参数。

(4)备选答案:

A. /proc B. ntfs C. /tmp D. /etc/profile

【问题3】(4分)

在Linux中,分区分为主分区、扩展分区和逻辑分区,使用fdisk—1命令获得分区信

息如下所示:

试题二(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。 【说明】 L

试题二(共15分) 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。 【说明】 L

【问题4】(3分)

在Linux系统中,对于(7)文件中列出的Linux分区,系统启动时会自动挂载。此外,超级用户可通过(8)一命令将分区加载到指定目录,从而该分区才在Linux系统中可用。

点击查看答案

第6题

试题二(共15分)阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某公司使用ASP

试题二(共15分)

阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

某公司使用ASP.NET+SQLServer开发电子商务网站,该网站分为前台和后台两部

分,前台具有会员登录、商品展示、商品搜索;、个人中心和购物车等功能;后台具有商

品管理、会员管理和订单管理等功能。

【问题1】(6分)

ASP.NET访问数据库一般采用ADO.NEt。ADO.NET主要包含Connection对象、

Command对象、DataReader对象、DataAdaptiIr对象、DataSet对象和DataView对象等。

建立数据源连接使用的对象是(l).。连接对象创建完成后,打开连接,需使用的方法是

(2),连接对象使用结束后,一般需要关闭连接,使用的方法是(3)。如果在操作数据

库时,需要大批量的处理数据或者想在断开数据库连接的情况下操作数据,.NET使用(4)

对象将数据从数据库服务器中取出,并将数据存入(5)对象中。如果要添加、修改或删

除数据,需要使用(6)对象。

【问题2](3分)

该电子商务网站数据库business中包含一张新闻表,名为news,结构如表2-1所示。

试题二(共15分)阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某公司使用A

现在发现news表中缺少字段“新闻作者”,要求使用SQL语句添加该字段,字段名

为newsauthor,数据类型为varchar,长度为20,默认值为admin。请根据题目说明,将

SQL语句补充完整。

ALTER TABLE (7) ADD (8)(2O)default‘(9)’。

试题二(共15分)阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某公司使用A

点击查看答案

第7题

试题二(共15分) 阅读以下说明和C函数,回答问题 l至问题 3,将解答写在答题纸的对应栏内。 【说明1】

试题二(共15分)

阅读以下说明和C函数,回答问题 l至问题 3,将解答写在答题纸的对应栏内。

【说明1】

函数substring(const char str[],int index,int length)的功能是求出字符串str中指定序号index开始且长度为length的子串,并返回所取出的子串。以字符串“China today”为例,其第一个字符“C”的序号为1(而其在字符数组str中的下标为0),从序号 5开始且长度为 3的子串为“at”。

试题二(共15分) 阅读以下说明和C函数,回答问题 l至问题 3,将解答写在答题纸的对应栏内。 【说

【问题1】(6分)

函数substring 中有两处错误,请指出这些错误所在代码的行号,并在不增加和删除 代码行的情况下进行修改,写出修改正确后的完整代码行(有注释时,注释可省略)。

试题二(共15分) 阅读以下说明和C函数,回答问题 l至问题 3,将解答写在答题纸的对应栏内。 【说

【说明2】

在C函数 2中,reverse(unsigned intn的功能是求出并返回n的反序数。例如,1234 的反序数是4321,其求解过程如下:

(1)由1234除以 10得到商123和余数4,O乘以10再加上 4得到 4;

(2)由123除以10得到商12和余数 3,4乘以10再加上 3得到43;

(3)由12除以10得到商 l和余数2,43乘以10 再加上2得到432;

(4)由 1除以 10得到商 0和余数 1,432乘以10再加上 1得到4321。

【C函数2】

unsigned int reverse(unsigned int n)

{

unsigned int result=0;

while((1) ){

result= result *10+ n%10;

n= (2)__;

}

retum result,

}

【问题2] (6分)

请根据说明2,填充C函数 2中的空缺(1)和(2)。

【问题3](3分)

用567,1234,56781234,62354879643分别作为实参调用函数reverse,对应的返回值分别

为765,4321,43218765,1357400630。请说明以62354879643作为实参调用函数 reverse

时返回结果出错的原因。

点击查看答案

第8题

试题五(共15分) 阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 小明在一家

试题五(共15分)

阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

小明在一家超市工作,该超市将进行整体改造,小明负责信息系统软硬件升级,他制定的工作计划如表5.1所示。

试题五(共15分) 阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 小明在

每项任务的逻辑关系和部分时间信息如图5-1所示。

试题五(共15分) 阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 小明在

【问题1】 (10分)

请根据表5-1和图5-1,计算各项任务的最迟开始时间和最迟结束时间,填充图5-1中的空(1)~(10)。

点击查看答案

第9题

阅读以下说明和C++码,将应填入(n)处的字名写在对应栏内。 从下列的3道试题(试题五至试题七)中任选

阅读以下说明和C++码,将应填入(n)处的字名写在对应栏内。

从下列的3道试题(试题五至试题七)中任选1道解答。

如果解答的试题数超过1道,则题号小的1道解答有效。

[说明] 编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a: xxk1. dat”中。

(1)

include <fstream. h >

include < stdlib. h >

void main () {

(2)

if (! four) {

cerr < <“文件没有找开!” < <end1;

exit (1);

}

int x;

cin > >x;

while((3)){

(4)

cin> >x;

}

(5)

}

点击查看答案

第10题

试题二(共 15 分) 阅读以下说明,回答问题 1 至问题3,将解答填入答题纸的对应栏内。 【说明】 某

试题二(共 15 分)

阅读以下说明,回答问题 1 至问题3,将解答填入答题纸的对应栏内。

【说明】

某企业业务系统,使用一台应用服务器和一台数据库服务器,支持数百台客户机同时工作。该业务系统投入运行后,需交给运行维护部门来负责该业务系统的日常维护工作。运行维护部门内部分为两大部门,网络维护部门负责所有业务系统的网络运行维护;

应用系统维护部门负责应用系统服务器的运行维护,保证应用系统处在正常的工作环境下,并及时发现出现的问题,分析和解决该问题。

【问题 1】(6 分)

针对该业务系统,应用系统维护部门在运行维护中需要监控的主要性能数据有哪些?

【问题 2】(4 分)

业务系统中,终端用户响应时间是一项非常重要的指标。获取系统和网络服务的用户响应时间的常见方案有哪些?

【问题 3】(5 分)

针对应用系统服务器监控所获取的数据,需要经过认真的分析来发现系统存在的性能问题。对监控数据进行分析主要针对的问题除了“服务请求突增”外,还有哪些?

点击查看答案

第11题

试题二(共25分) 阅读以下关于软件系统数据建模的说明,在答题纸上回答问题l至问题3.【说明】 某软件

试题二(共25分)

阅读以下关于软件系统数据建模的说明,在答题纸上回答问题l至问题3.

【说明】

某软件公司成立项目组为某高校开发一套教职工信息管理系统。与教职工信息相关的数据需求和处理需求如下:

(1)数据需求:在教职工信息中能够存储学校所有在职的教工和职工信息,包括姓名、所属部门、出生年月、工资编号、工资额和缴税信息;部门信息中包括部门编号、部门名称、部门人数和办公地点信息。

(2)处理需求:能够根据编制内或外聘教职工的工资编号分别查询其相关信息;每个月的月底统一核发工资,要求系统能够以最快速度查询出教工或者职工所在部门名称、实发工资金额;由于学校人员相对稳定,所以数据变化及维护工作量很少。

项目组王工和李工针对上述应用需求分别给出了所设计的数据模型(如图2-1和图2-2所示)。王工遵循数据库设计过程,按照第三范式对数据进行优化和调整,所设计的数据模型简单且基本没有数据冗余;而李工设计的数据模型中存在大量数据冗余。

试题二(共25分) 阅读以下关于软件系统数据建模的说明,在答题纸上回答问题l至问题3.【说明】 某软

项目组经过分析和讨论,特别是针对数据处理中对数据访问效率的需求,最终选择了李工给出的数据模型设计方案。

【问题1】(9分)

请用300字以内的文字,说明什么是数据库建模中的反规范化技术,指出采用反规范化技术能获得哪些益处,可能带来哪些问题。

【问题2】(8分)

请简要叙述常见的反规范化技术有哪些。

【问题3】(8分)

请分析李工是如何应用反规范化技术来满足教职工信息管理需求的。

点击查看答案
下载APP
关注公众号
TOP
重置密码
账号:
旧密码:
新密码:
确认密码:
确认修改
购买搜题卡查看答案 购买前请仔细阅读《购买须知》
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《服务协议》《购买须知》
立即支付 系统将自动为您注册账号
已付款,但不能查看答案,请点这里登录即可>>>
请使用微信扫码支付(元)

订单号:

遇到问题请联系在线客服

请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系在线客服
恭喜您,购买搜题卡成功 系统为您生成的账号密码如下:
重要提示:请勿将账号共享给其他人使用,违者账号将被封禁。
发送账号到微信 保存账号查看答案
怕账号密码记不住?建议关注微信公众号绑定微信,开通微信扫码登录功能
请用微信扫码测试
优题宝