《第二期期中试题(共6页).doc》由会员分享,可在线阅读,更多相关《第二期期中试题(共6页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上华清远见嵌入式学院第二学期期中考试一、 选择题(10题,每题2分,共20分)1. 如果进程A调用fork函数,创建进程B,然后进程B再调用fork函数,创建进程C,进程C调用exec执行新的程序,那么各个进程将以什么顺序来执行:( )。A 以A、B、C的顺序执行B 以C、B、A的顺序执行C 以B、C、A的顺序执行D 无固定执行顺序2. 以下对早期ARPAnet的描述不正确的是 ( )A使用NCP协议 B不能互联不同类型的计算机C没有纠错功能 D可以互联不同类型的操作系统3. Internet中的世界语是 ( )A TCP B IP C TCP/IP D http4.
2、以下不属于socket的类型的是 ( )。A流式套接字B数据报套接字C原始套接字D网络套接字5. 以下关于socket的描述错误的是 ( ) A 是一种文件描述符 B 是一个编程接口 C 仅限于TCP/IP D 可用于一台主机内部不同进程间的通信 6. 路由器是根据哪一层的信息为数据包选择路由 ( ) A 物理层 B 数据链路层 C 网络层 D 传输层7. 为了解决在不同体系结构的主机之间进行数据传递可能会造成歧义的问题,以下( )函数常常用来在发送端和接收端对双字节或者四字节数据类型进行字节序转换。A htons()/htonl()/ntohs()/ntohl()B inet_addr()/
3、inet_aton()/inet_.C gethostbyname()/gethostbyaddr()D (struct sockaddr *)&(struct sockaddr_in类型参数)8. 在实现基于TCP的网络应用程序时,服务器端正确的处理流程是( )A socket() -> bind() -> listen() -> connect() -> read()/write() -> close()B socket() -> bind() -> listen() -> read()/write() -> close()C
4、socket() -> bind() -> listen() -> accept() -> read()/write() -> close()D socket() -> connect() -> read()/write() -> close()9. 只用于同一主机内部进程间通信的socket应使用的协议族是 ( )A AF_INET B AF_UNIX C AF_NS D AF_IMPLINK 10. 以下哪个协议不是用在网络层的 ( )A IGMP B IP C ICMP D SMTP二、 判断题(15题,每题1分)1. 信号是一种同步通讯方
5、式 ( )2. 可以使用signal()来给同一进程组中的所有进程发送信号 ( )3. 从一个空FIFO中读取数据时会发生阻塞,但从一个空PIPE中读取数据时不会发生阻塞 ( )4. IP地址均为32位 ( )5. 大端序表示高位字节存储在高地址 ( )6. bind()函数用于将套接字和某个地址绑定 ( )7. connect()函数既可以用于TCP,也可以用于UDP ( )8. 每个套接字最多只能connect一次 ( )9. 为了区分一台主机接收到的网络数据包应该递交给哪个套接字来处理,要根据端口号 ( )10. 无论是TCP socket,还是UDP socket,它们的服务器端必须调
6、用bind()函数来绑定一个地址,这样客户端才可以和服务器端通信 ( )11. 发送一个UDP数据报,必须使用sendto()函数 ( )12. 当inet_addr(char *address)的参数address包含不合法的IP地址时,函数返回0 ( )阅读以下程序,完成13-15题。 listenfd = socket(); bind(listenfd,); listen(listenfd,); for ( ; ; ) connfd = accept(listenfd, ); if ( pid = fork( ) = 0) recv(connfd,); send(connfd,); el
7、se exit(0); 13. 这是一个并发服务器。( )14. 在任何时候,该服务器只能处理一个客户端的请求。( )15. 随着服务器端接受越来越多的请求,connfd的值变得越来越大。( )三、简答题(5题,每题5分,共25分)1. 如何在并发程序中避免僵尸进程?(父进程不阻塞,不轮询,描述思路或写出代码)2. 父子进程读写同一个缓冲区,初始时缓冲区中无数据。( read() /读缓冲区 write() /写缓冲区 sem_t /信号量类型 void init_sem(sem_t *s, int value) / 初始化信号量s的值为valuevoid p(sem_t *s) / 对信号量
8、s进行p操作 void v(sem_t *s) / 对信号量s进行v操作)3. 简述TCP和 UDP的异同点4. 什么是高可靠性通信?5. 简述UNIX/Linux下主要的四种IO模型的特点四、综合题(3题,共40分,编程题可省略头文件)1. 什么是网络体系结构? 画出OSI和TCP/IP参考模型的对应关系图(包括每层常用的协议或应用)2. 编写一个TCP并发服务器端程序,可以把客户端发来的消息回射给客户端 (15分)3. 编写UDP程序,通过多路IO复用同时处理标准输入和套接字。当输入为quit时程序结束;当通过套接字收到对方消息时回射给对方 (15分)int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeval);void FD_CLR(int fd, fd_set *set);int FD_ISSET(int fd, fd_set *set);void FD_SET(int fd, fd_set *set);void FD_ZERO(fd_set *set);专心-专注-专业