网络编程试题参考答案范文

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华清远见嵌入式学院第二学期期中考试

一、选择题(10题,每题2分,共20分)

1.如果进程A调用fork函数,创建进程B,然后进程B再调用fork函数,创建进程C,进程C调用

exec执行新的程序,那么各个进程将以什么顺序来执行:( D)。

[A] 以A、B、C的顺序执行

[B] 以C、B、A的顺序执行

[C] 以B、C、A的顺序执行

[D] 无固定执行顺序

2.以下对早期ARPAnet的描述不正确的是( D)

[A] 使用NCP协议[B] 不能互联不同类型的计算机

[C] 没有纠错功能 [D] 可以互联不同类型的操作系统

3.Internet中的世界语是( C)

[A] TCP [B] IP [C] TCP/IP [D] http

4.以下不属于socket的类型的是( D)。

[A] 流式套接字

[B] 数据报套接字

[C] 原始套接字

[D] 网络套接字

5.以下关于socket的描述错误的是( C)

[A] 是一种文件描述符

[B] 是一个编程接口

[C] 仅限于TCP/IP

[D] 可用于一台主机内部不同进程间的通信

6.路由器是根据哪一层的信息为数据包选择路由( C)

[A] 物理层[B] 数据链路层[C] 网络层[D] 传输层

7.为了解决在不同体系结构的主机之间进行数据传递可能会造成歧义的问题,以下( A )函数常常用

来在发送端和接收端对双字节或者四字节数据类型进行字节序转换。

[A] htons()/htonl()/ntohs()/ntohl()

[B] inet_addr()/inet_aton()/inet_...

[C] gethostbyname()/gethostbyaddr()

[D] (struct sockaddr *)&(struct sockaddr_in类型参数)

8.在实现基于TCP的网络应用程序时,服务器端正确的处理流程是( C)

[A] socket() -> bind() -> listen() -> connect() -> read()/write() -> close()

[B] socket() -> bind() -> listen() -> read()/write() -> close()

[C] socket() -> bind() -> listen() -> accept() -> read()/write() -> close()

[D] socket() -> connect() -> read()/write() -> close()

9.只用于同一主机内部进程间通信的socket应使用的协议族是( B)

[A] AF_INET [B] AF_UNIX [C] AF_NS [D] AF_IMPLINK

10.以下哪个协议不是用在网络层的( D)

[A] IGMP [B] IP [C] ICMP [D] SMTP

二、判断题(15题,每题1分)

1.信号是一种同步通讯方式( F)

2.可以使用signal()来给同一进程组中的所有进程发送信号( F)

3.从一个空FIFO中读取数据时会发生阻塞,但从一个空PIPE中读取数据时不会发生阻塞( F)

4.IP地址均为32位( F)

5.大端序表示高位字节存储在高地址( F)

6.bind()函数用于将套接字和某个地址绑定( T)

7.connect()函数既可以用于TCP,也可以用于UDP ( T)

8.每个套接字最多只能connect一次( F)

9.为了区分一台主机接收到的网络数据包应该递交给哪个套接字来处理,要根据端口号( T)

10.无论是TCP socket,还是UDP socket,它们的服务器端必须调用bind()函数来绑定一个地址,这

样客户端才可以和服务器端通信( T)

11.发送一个UDP数据报,必须使用sendto()函数( F)

12.当inet_addr(char *address)的参数address包含不合法的IP地址时,函数返回0 ( F)

阅读以下程序,完成13-15题。

listenfd = socket(…);

bind(listenfd,…);

listen(listenfd,…);

for ( ; ; ) {

connfd = accept(listenfd, …);

if (( pid = fork( )) == 0)

{

recv(connfd,…);

send(connfd,…);

}

else exit(0);

}

13.这是一个并发服务器。( F)

14.在任何时候,该服务器只能处理一个客户端的请求。( T)

15.随着服务器端接受越来越多的请求,connfd的值变得越来越大。( T)

三、简答题(5题,每题5分,共25分)

1.如何在并发程序中避免僵尸进程?(父进程不阻塞,不轮询,描述思路或写出代码)

方式一:在父进程中忽略SIGCHLD信号

方式二:在父进程中捕捉SIGCHLD信号,并在信号处理函数中用waitpid回收子进程

2.两个线程分别读写同一个缓冲区,初始时缓冲区中无数据。

( read() 简述TCP和UDP的异同点

相同点:都是传输层协议

不同点:tcp协议面向连接,提供可靠的传输;udp协议无连接,不保证可靠的传输

4.什么是高可靠性通信?

数据无错误、数据无丢失、数据无失序、数据无重复到达

相关文档
最新文档