网络程序设计试题A卷-最新版本

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

西安电子科技大学《网络程序设计》试题

(2013 年 A 卷)

考试时间120分钟试卷编号_________

班级________ 学号___________ 姓名_________ 任课老师姓名_____________

一、单选题(102分=20分)

1 •以下字段中,不属于IP首部的是 _____

A. 协议类型

B. 生存时间

C. 源IP地址

D. 目的端口号

2 •以下函数中,不会产生阻塞的是 ________

A. send()

B. sen dto()

C. conn ect()

D. liste n()

3 •进程A是进程B的父进程,当A正在运行时B退出,下列叙述中正确

的是_____

A •进程A也将退出

B .进程A将收到SIGCHLD信号

D .进程A将收到SIGKILL信号

D •进程A会成为僵尸进程

4 .整数0x12345678在little-endian字节序主机内存中的存储形式是

__________ (注:内存由低到高)

A. 12 34 56 78

B. 78 56 34 12

C. 34 12 78 56

D. 56 78 12 34

5 .使用信号驱动I/O时哪一个不是必须要执行的操作__________

A .为信号SIGIO关联一个信号处理函数

B .设置套接字为非阻塞模式

C .设置套接字所有者

D .允许套接字进行信号驱动I/O

6. _______________________________________________________________ 对使用UDP协议的套接字调用connect函数,下面叙述中正确的是________________

A . connect函数将阻塞

B . connect函数将导致3次握手操作

C. connect函数记录对方的IP地址和端口后立刻返回

D .不能对使用UDP协议的套接字描述符调用connect函数

7. 对函数调用send(sockfd, 12xyz”,5,MSG_OOB)的描述中正确的是 __________

A .只有字符z被写入发送缓冲区

B .只有字符串12xy被写入发送缓冲区

C .字符串12xyz中的每个字符都将作为带外数据发送

D . TCP协议发送的下一个报文段中URG标志将置位

&在给网络地址附值时,程序如果使用“INADDR_ANY ”,则表明_______

A .对于只有一个IP地址的主机,使用“ 127.0.0.1 ”地址

B .对于有多个网卡的主机,使用其中任意一个IP地址

C .对于有多个网卡的主机,表示所有IP地址,并处理所有地址的请求

D .以上均不对

9 .请求建立连接时TCP包头中的__________ 标志位有效

A. SYN

B. RST

C. PSH

D. URG

10 .当通信的对方关闭其写通道时,TCP套接字的读函数read()将_ _

A.返回大于0的整数

B.返回小于0的整数

C.阻塞

D.返回0

二、判断下面命题的正确性,对不正确的命题,说明错误原因(5X 2=10分)

1. 一般情况下,守护进程是在后台运行。

守护进程不考

2. Browse/Server模型主要事务在服务器端实现,一部分事务在前端实现。

正确

3. 阻塞式I/O是套接字的默认模型。

正确

4. IP数据包首部中TTL=64表示数据包在网上的最大生存时间是64秒。

错误,TTL表示数据包在网上的最大生存时间,但单位不是秒,而是表示

数据包可经过的最多的路由器数量,每经过一个路由器这个值-1。当这个值

减为0时网络设备将抛弃这个包。

5 .可以只用通信双方的IP地址来标识一条TCP网络连接。

错误,除了需要通信双方的IP地址外还需要通信双方的端口号。

三、简答题(5X 5分=25分)

1.请简述4 种Linux 系统中进程间的通信机制。

(1)管道(pipe)和命名管道(named pipe/FIFO )

( 2)信号( signal)

( 3)消息队列( message queue)

(4)共享内存(share memory)和内存映像文件( memory mapped file )

(5)信号量( semaphore)

( 6) UNIX 域socket

2.套接字函数close( )与shutdown( ) 的差别?

shutdown 操作连接通道,其他进程不能再使用已被关闭的通道;close 操作描述符,其他进程仍然可以使用该socket 描述符

close 关闭应用程序与socket 的接口,调用close 之后进程不能再读写这个socket;shutdown 可以只关闭一个通道,另一个通道仍然可以操作3.请简述循环服务器模型和并发服务器模型的区别。

循环服务器:任一时刻只处理一个客户机请求,处理请求过程中下一请求等待,节省服务器资源,响应时间长,适合处理非耗时请求。

并发服务器:并发执行,每收到一个连接请求创建一个进程处理该连接,服务器继续等待下一连接,响应速度快,占用系统资源多。

4.怎样将阻塞式套接字转变为非阻塞式套接字?

( 1 )函数fcntl

int flags;

flag=fcntl(sockfd,F_GETFL,0); fcntl(sockfd,F_SETFL,flag|O_NONBLOCK);

( 2)函数ioctl

int on=1;

ioctl(sockfd,FIONBIO,&on);

5.Linux 系统主要实现了哪几种输入/输出模型?请简述每种模型的特点。

阻塞式I/O 模型-默认I/O 模型编程简单,在进程被阻塞期间不占用CPU 时间,不影响其他进程的工作效率。但进程可能长期处于休眠状态,在此期间进程不能执行别的任务,进程

自身的效率不高。

非阻塞式I/O 模型

变成相对复杂,当I/O 操作不能完成时,进程还可以执行后续的程序代码,提高了进程自身的工作效率。但进程一直处于运行状态,可能占用大量的

CPU 时间来检测I/O 操作是否完成,从而影响其他进程的运行效率。多路复用I/O 模型

只检查一个socket 描述符时和阻塞式I/O 模型类似,只是阻塞的位置不同,

相关文档
最新文档