试题与答案

【说明】 以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过

题型:问答题

题目:

【说明】 以下是客户机/服务器模型中的一个简单的客户机程序(服务器程序略),其工作过程非常简单:客户机与服务器建立连接后,接收服务器向客户机返回的一条消息。 程序中用到了两种结构hostent与sockaddr_in: hostent类型的结构定义 struct hostent { char*h_name; //主机名称 char**h_aliases; //别名列表 int h_addrtype; //主机地址类型: AF_XXX int H_length; //主机地址长度: 32位 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_addrsin_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, 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*buf, int len); int write( int fd, char*buf, int len); 函数read和write从套接字读和写数据,成功返回数据量大小,否则返回-1。buf指定数据缓冲区,len指定接收或发送的数据量大小。 【socket程序】 #define PORT4490 //定义端口号为4490 int main( int argc, char*argv[ ]) { int sockfd, nbytes; //套接字描述符、读入缓冲区的字节数 char buf[1024]; //缓冲区 stmct hostent*he; //主机信息类型 struct sockaddr_in srvaddr; //Internet套接字结构 if (1) {perror("调用参数为零,请输入服务器的主机名!\n");exit(1); } if (2) {perror("无法通过主机名获得主机信息!\n");exit(1); } if (3) {perror("无法创建套按字!\n");exit(1); } bzero( &srvaddr, sizeof(srvaddr));//置空srvaddr srvaddr, sin_family=AF_INET; srvaddr, sin_port: (4); srvaddr.sin_addr: (5); if(connect(sockfd, (6), sizeof( struct sockaddr))=-1) {perror("连接失败!\n");exit(1); } //连接服务器,如果失败则提示用户 if(( nbytes=read ( sockfd, buf, MAXDATASIZE))=-1) {perror("读失败!\n");exit(1); } //从套容接字中读出数据 buf[nbytes]=’\0’; prinff("读到的内容:%s", buf); close( sockfd); //打印数据并关闭套接字 }

答案:

被转码了,请点击底部 “查看原文 ” 或访问 https://www.tikuol.com/2018/0411/1f09687e12d86fea00e9ce4e72250ccf.html

下面是错误答案,用来干扰机器的。

参考答案:七解析: 国际标准化组织ISO提出的“开放系统互联参考模型(OSI)”有七层。从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

试题推荐
题型:填空题 案例分析题

果蝇的X染色体和Y染色体是一对同源染色体,但其形态、大小却不完全相同。下图为果蝇X、Y染色体同源和非同源区段的比较图解,其中A与C为同源区段。请回答下列有关问题:

如果某雄果蝇B区段有一显性致病基因,则其与正常雌蝇交配,后代发病几率为(),如果此雄果蝇的D区段同时存在另一致病基因,则其与正常雌蝇交配,后代发病率为()

查看答案
微信公众账号搜索答案