● 试题四请阅读以下说明和Socfort程序,将应填(n)处的字句写在答题纸的对应栏内。【说明】网络应用的基本模型是客户机/服务器模型,这是一个不对称的编程模型,通信的双方扮演不同的角色:客户机和服务器。以下是一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。程序中用到了两种结构hostent与sockaddr_in:hostent类型的结构定义如下:struct hostent { char*h_name;//主机的正式名称char**h_aliases;//别名列表int h_addrtype;//主机地址类型:AF-XXXint H_length;//主机地址长度:4 B(32 b)char**h_addr_list;//主机IP地址列表}#define h-addr h-addr-list[0]sockaddr_in类型的结构定义:sockaddr_in是通用套接字结构sockaddr在TCP/IP协议下的结构重定义,为TCP/IP套接字地址结构。Struct sockaddrin{short int sin-family;//地址类型AF_XXX,其中AF_INET为TCP/IP专用unsigned short int sin-port;//端口号struct in_addr sin_addr;//Internet地址//端口号以及Internet地址使用的是网络字节顺序,需要通过函数htons转换}struct iN_addr{_u32 s-addr;//类型为unsignel-long}程序中使用到了多个函数:struct hostent * gethostbyname(const char* hostname);函数gethostbyname查询与指定的域名地址对应的IP地址,返回一个hostent结构的指针,如果不成功则返回NULL。int_socket(int domain,im-type,int protoco1);函数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指定接收或发送的数据量大小。【Socket程序】//程序中引用的头文件略#definePORT 3490//定义端口号为3490int main(int argc,char*argv[]){int sockfd,nbytes;//套接字描述符、读入缓冲区的字节数char buf[1024];//缓冲区struct hostent*he;//主机信息类型struct (1) srvaddr;//Internet套接字结构if(argc!=2){perror("调用参数为零,请输入服务器的主机名!\n");exit (1) ;}if( (2) )//如果通过主机名没有获得对应的主机信息就提示用户{perror("无法通过主机名获得主机信息!\n");exit (1) ;}if( (3) ) //在无法创建套接字时,提示用户{perror("无法创建套按字!\n");exit (1) ;}bzero(srvaddr, (4) );//置空srvaddrsraddr,sin_family=AF_INET;srvaddr,sin_port: htons(PORT);srvaddr.sin_addr: (5) ;//设置套接字结构的各项信息,其中的地址来自域名查询后的hp变量if(connect(sockfd,(n) ,sizeof(struct sockaddr))==-1){perror("连接失败!\n");exit (1) ;}//连接服务器,如果失败则提示用户if((nbytes=read(sockfd,buf,MAXDATASIZE))=-1){perror("读失败!\n");exit (1) ;}//从套接字中读出数据buf[nbytes]=\0;printf("读到的内容:%s",buf);close(sockfd);//打印数据并关闭套接字}

● 试题四

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

【说明】

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

以下是一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。

程序中用到了两种结构hostent与sockaddr_in:

hostent类型的结构定义如下:

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

char**h_aliases;//别名列表

int h_addrtype;//主机地址类型:AF-XXX

int H_length;//主机地址长度:4 B(32 b)

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

#define h-addr h-addr-list[0]

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

Struct sockaddrin{

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

unsigned short int sin-port;//端口号

struct in_addr sin_addr;//Internet地址

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

}

struct iN_addr{

_u32 s-addr;//类型为unsignel-long

}

程序中使用到了多个函数:

struct hostent * gethostbyname(const char* hostname);

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

int_socket(int domain,im-type,int protoco1);

函数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指定接收或发送的数据量大小。

【Socket程序】

//程序中引用的头文件略

#definePORT 3490

//定义端口号为3490

int main(int argc,char*argv[])

{int sockfd,nbytes;//套接字描述符、读入缓冲区的字节数

char buf[1024];//缓冲区

struct hostent*he;//主机信息类型

struct (1) srvaddr;//Internet套接字结构

if(argc!=2)

{perror("调用参数为零,请输入服务器的主机名!\n");exit (1) ;}

if( (2) )//如果通过主机名没有获得对应的主机信息就提示用户

{perror("无法通过主机名获得主机信息!\n");exit (1) ;}

if( (3) ) //在无法创建套接字时,提示用户

{perror("无法创建套按字!\n");exit (1) ;}

bzero(&srvaddr, (4) );//置空srvaddr

sraddr,sin_family=AF_INET;

srvaddr,sin_port: htons(PORT);srvaddr.sin_addr: (5) ;

//设置套接字结构的各项信息,其中的地址来自域名查询后的hp变量

if(connect(sockfd,(n) ,sizeof(struct sockaddr))==-1)

{perror("连接失败!\n");exit (1) ;}

//连接服务器,如果失败则提示用户

if((nbytes=read(sockfd,buf,MAXDATASIZE))=-1)

{perror("读失败!\n");exit (1) ;}

//从套接字中读出数据

buf[nbytes]=\0;

printf("读到的内容:%s",buf);

close(sockfd);

//打印数据并关闭套接字

}


相关考题:

●试题四阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】函数QuickSort是在一维数组A[n]上进行快速排序的递归算法。【函数】void QuickSort(int A[],int s,int t){int i=s,j=t+1,temp;int x=A[s];do{do i++;while (1) ;do j--;while(A[j]x);if(ij){temp=A[i]; (2) ; (3) ;}}while(ij);A[a]=A[j];A[j]=x;if(si-1) (4) ;if(j+1t) (5) ;}

●试题二阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】该程序运行后,输出下面的数字金字塔【程序】includestdio.hmain (){char max,next;int i;for(max=′1′;max=′9′;max++){for(i=1;i=20- (1) ;++i)printf(" ");for(next= (2) ;next= (3) ;next++)printf("%c",next);for(next= (4) ;next= (5) ;next--)printf("%c",next);printf("\n");}}

●试题一阅读下列说明和流程图,将应填入(n)的字句写在答题纸的对应栏内。【说明】下列流程图(如图4所示)用泰勒(Taylor)展开式sinx=x-x3/3!+x5/5!-x7/7!+…+(-1)n×x 2n+1/(2n+1)!+…【流程图】图4计算并打印sinx的近似值。其中用ε(0)表示误差要求。

试题三(共 15 分)阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

图2-1是基于软交换的网络分层模型。请将选项应填入(n)处的字句写在答题纸对应的解答栏内。

(a)智能网概念模型中分布功能平面模型如下图所示,请根据此图将应填入(n)处的 字句写在答题纸的对应栏内。

下图是基于软交换的网络分层模型简图,请根据简图将应填入(n)处的字句写在答题 纸的对应栏内。(图中(6)是(4)与媒体网关交互时可以使用的控制协议)

图6-1是下一代网络的体系结构简图,请根据此简图将应填入(n)处的字句写在答题纸的对应栏内。

阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。【C++代码】 #include using namespace std; class invoice{ public: (1){ cout

阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。【说明】某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。