您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页网络编程模拟试卷及答案修正版

网络编程模拟试卷及答案修正版

来源:爱够旅游网


请同学们一定要根据考试大纲复习,此模拟试卷仅供题型参考!

答案是我自己做的,可能会有些错误,希望同学们帮忙找出来-----发弟留

一、填空题

1、请利用socket()函数创建一个流式套接字,同时定义一个SOCKET sockSrv描述符,用来接收

socket()函数的返回值:SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0)。

2、用VC++编写Windows应用程序主要有两种方法:一种使用Windows提供的API函数,另外

一种是使用Microsoft提供的MFC类库 ,这是目前VC++编程的主流。 3、在生成套接字描述符后,要将套接字与计算机上的特定的 IP地址 和 传输层端口号 相关联,

这个过程称为绑定。

4、套接字的3种类型有流式套接字、 数据报套接字 和原始套接字。

5、命令按钮空间能够处理的消息是: BN_CLICKED ;编辑框控件一般接收的消息是:

EN_CHANGE 。

6、编辑框连接的变量类别有两种,一种是 Contorl ,说明该变量做控件使用,对应的变量类型

只能是 CEdit 类型,可以使用控件的成员函数,另一种是 Value ,为C/C++普通变量,不能使用控件的成员函数。

7、改变了编辑框的内容并不会自动更新对应变量的值,同样,改变了变量的值也不会自动更新

编辑框的内容。若要保持一致,则应使用 UpdateData() 函数,其中 UpdateData(TRUE) 表示更新对应的变量值,而 UpdateData(FALSE) 表示更新对应编辑框的值。

8、同一组单选按钮必须一个接一个的被放进对话框,中间不能插其他控件,并且一个组的第一

个按钮必须选中 ”组”或者”Group” 属性,表示一组控件的开始。

9、在VC++中,如果想要输入点分十进制IP地址可使用 IP地址控件 ,该控件对应的的MFC类

是: 对话框类 。

二、单项选择题【上次发的第九题答案出错,在此表示歉意,请及时改正】

1、当对话框上控件较多时,可以使用什么控件将一组相关的控件框起来,达到标识一组控件的作用( )。

A.框架 B.静态文本 C.复选框 D.组合框 2、MFC中封装的用于操作字符串的类是( )。

A.string B.String C.CString D.cstring 3、MFC中绝大部分类都是从哪个类派生而来,它常被称为根基类( )。

A.CWnd B. CObject C.CCmdTarget D.CStatic

4、在VC++中,可以创建三类典型的Windows应用程序,它们都是通过什么向导创建( )。 A.AppWizard B. ClassWizard C.CCmdTarget D.CStatic 5、下面哪种控件是CStatic类的对象( )。

A.按钮 B.静态文本框 C.单选按钮 D.复选框 6、单选按钮、复选框和命令按钮都是哪种类的对象( )。

A.CButton B. CEdit C.CStatic D.CIPAddressCtrl 7、复选框通常被连接到什么类型的变量( )。

A.CButton B. CEdit C.BOOL D.int 8、一组单选按钮中的第一个按钮要选定什么属性( )。

A.Visible B. Group C.Auto D.Notify 9、下面哪个函数实现了将网络地址转换成点分十进制( )。

A.inet_addr B.inet_ntoa C.ntohl D.htonl

第 1页

10、WinSock以DLL的形式提供,在调用任何WinSock API之前,必须调用函数( )进行初始化。 A.bind B.WSACleanUp C.WSAStartup D.IninInstance 11、在QQ聊天中,当接收或发送信息时,采用的是socket的哪种套接字( )。 A.流式套接字 B.字串套接字 C.原始式套接字 D.数据报式套接字

12、当要求以面向对象的思想来设计程序时,可以将全局函数设计为类的静态成员,下面哪一个

关键词是用来声明静态成员的( )。

A.virtual B.static C.public D.private 13、套接字编程中,用来接收数据的函数是( )。

A.bind B.accept C.listen D.recv 14、在面向连接的套接字编程中,服务器端必须执行的一个函数是( )。 A.listen B.connect C.recv D.send 15、在面向数据报的套接字编程中,可能执行到的函数是( )。

A.listen B.connect C.recvfrom D.send 1、请简述套接字编程的特点。

a.通信域

b.套接字具有三种类型(流式套接字,数据报套接字,原始套接字) c.套接字由应用层的通信进程创建,并为其服务 d.使用确定的IP地址和传输层端口号

2、什么是MFC?使用MFC编程有什么优点。 MFC是一个微软公司提供的类库,以C++类的形式封装了Windows的API,并包含一个应用程序框架,以减少程序人员的工作量。

特点:开发难度小,开发工作量小,源代码效率高

3、请简述C/S模式的无连接套接字编程流程。(书77页)

服务器 客户端 创建数据报套接字:SOCKET() 创建数据报套接字:SOCKET() 绑定套接字: BIND() ↓ 发送数据报:SENDTO() 接收数据报:RECVFROM()

阻塞,等待客户端数据 处理客户端数据 发送数据报:SENDTO() 接收数据报:RECVFROM()

关闭套接字:CLOSE()

关闭套接字:CLOSE() 第 2页

4、请分析下面程序的功能:

WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 )

{ return; }

if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )

{ WSACleanup( ); return; }

(1)请结合上述程序解释WSAStartup函数的作用。

加载套接字库

(2)两个条件分支分别完成什么功能。

a. 调用失败返回 b. 关闭套接字

5、请在下面OnDraw函数中完成画矩形、画圆和画线操作,其中左上角顶点(10,10),右下角顶点(100,100)。 void CTestView::OnDraw(CDC* pDC) {

pDC->Rectangle(10,10,100,100); //画矩形(左上角顶点(10,10),右下角顶点(100,100)。)

pDC->Ellipse(10,10,100,100);

//画圆(外切矩形左上角顶点(10,10),右下角顶点(100,100)。)

pDC->MoveTo(10,10); pDC->LineTo(100,100); //画线(起点(10,10),终点(100,100)。

四、综合题

1、现在要制作一个基于对话框的计算器,请回答下面问题:【此题答案除了第一问之外,其他的我不敢肯定,本人表示智商是硬伤】

(1)假定该工程命名为“计算器”,则该工程会自动生成那几个类;(3分) CAboutDlg , CMyDlg ,CMyApp

第 3页

(2)请简单介绍计算器界面和对话框中所用控件的属性设置及消息响应(图示界面);(4分)

编辑框控件属性:ID:IDC_EDIT 本排列为Right 选择只读 连接变量 m_e(Value,CString) 数字键0~9 按钮的消息响应为:添加运算数值

“+-*/”运算符键对应的消息响应为: 为计算器添加运算符 “=”键的消息响应:计算出计算的结果 “about”键的消息响应:版权信息 “清除”键的消息响应:清空编辑框 “退出”键的消息响应:退出程序

(3)请简述计算器实现的基本原理。(3分)

A.通过编辑框及按钮等控件实现简单的计算功能;其中编辑框用来显示和存储计算数据,数字按钮用来输入要计算的数据,运算符“ +-*/ ”按钮用来增加运算符,“=”用来显示计算结果,其他按钮是用来对界面进行基本的清空,退出,显示版权的操作。

B. 当数字按钮按下去的时候在编辑框显示要操作的数据,再按运算符按钮添加运算规则,同时清空编辑框,为输入第二个数据做准备,输入第二个数据,紧接着按“=”计算出结果。

2、已知Internet通信域的地址结构变量sockaddr_in(也可以写成SOCKADDR_IN)的定义如下,现在定义一个结构体变量SOCKADDR_IN addrProc;请初始化地址变量addrProc,要求:IP地址127.0.0.1,端口号6000,协议采用TCP/IP,IP地址和端口号要使用网络字节顺序。struct sockaddr_in{

short sin_family;

unsigned short sin_port; struct in_addr sin_addr;

第 4页

char sin_zero[8];

};

struct in_addr { }; union {

addrProc .sin_addr.S_un.S_addr=inet_addr(“127.0.0.1”); addrProc.sin_port=htons(6000); addrProc.sin_family=AF_INET;

struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w; u_long S_addr; } S_un;

3、下面的两个函数都是用来发送数据的,

①int send( SOCKET s, const char FAR *buf, int len, int flags); ②int sendto( SOCKET s, const char FAR *buf, int len, int flags,

const struct sockaddr FAR *to, int tolen );

(1)请分别解释函数参数的作用:(5分)

s: socket的识别码 buf: 存放要发送的数据 len: buf的长度

to: 存放目的socket地址 tolen: 目的socket地址的长度

(2)假定实现C/S模式的TCP服务,请将WELCOME通过服务端套接字描述符sockSrv发送给客户端。(2分) char buf[80]; sprintf(buf,”%s WELCOME”); send(sockSrv,buf,strlen(buf)+1,0) (3)对两个函数进行简单比较。(3分)

a. send()函数用来将数据由指定的socket传给对方主机,使用send()时套接字必须已经连

接。

b. sendto()函数用于向无连接的目的地的地址发送数据。使用时套接字不必连接。

答案仅供参考,我只能做到这了

第 5页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务