网络应用编程-试题库

更新时间:2024-07-02 15:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章 网络应用基础

1.1 填空

万维网(World Wide Web)以客户服务器(C/S)方式工作。

万维网使用统一资源定位符URL来标识万维网上的各种文档。

万维网客户程序与服务器程序之间的交互使用超文本传输协议HTTP。 HTML文档中,用和标记文档的开始和结束,在和标签之间文本的是头信息,在标签之间的文本是文档标题,在和标签之间的文本是文档的正文部分,会被显示在浏览器中。

创建一个指向http://www.google.cn的超链接的语法为:

在HTML文档中显示图像“title0.jpg”的语法为:标签。

JavaScript代码由标签之间,这些语句在页面加载时执行。

JavaScript函数由关键字function定义。

JavaScript采用事件驱动的机制对用户输入做出响应。

200

JavaScript提供了string、math和Date等常用内部对象。

1.2 问答

1.2.1

写出HTML文档的基本结构并说明各部分的意义。

Hello World!

Hello World!

This is my first page.

HTML文档中,第一个标签是。这个标签告诉浏览器这是HTML文档的开始。HTML文档的最后一个标签是,这个标签告诉浏览器这是HTML文档的结束。

在和标签之间文本的是头信息。在浏览器窗口中,头信息是不被显示的。 在标签之间的文本是文档标题,它被显示在浏览器窗口的标题栏。 在和标签之间的文本是文档的正文部分,会被显示在浏览器中。 1.2.2

以访问站点www.lgdx.mtn为例,说明浏览器访问Web服务器的整个过程。

第一步:在浏览器的地址栏中输入www.lgdx.mtn,向服务器发送访问请求。 第二步:服务器接收用户访问请求后,寻找默认的站点主页。

第三步:服务器处理已经找到的页面,访问数据库,获取最新的内容。

第四部:服务器将生成的页面发送给用户浏览器,浏览器解释执行页面代码。 1.2.3

用语言描述建立一个个人网站的操作过程(包括创建站点、设计界面布局等等)。

要点包括:1、提出需求;2、设计界面;3、设计功能;4、设计数据库、5、实现静态

页面;6、实现动态页面;7测试。 1.2.4

简述超链接中相对路径与绝对路径的定义以及它们的优缺点。

相对路径:某个资源相对于当前资源的路径称为相对路径; 绝对路径:某个资源在主机中存储的完整路径被称为绝对路径。

一般情况下是不用绝对路径的,因为资源常常是放在网上供其他人浏览的,写成绝对路径,当改变了站点路径后,资源地址用户将无法访问到。所以最好写成相对路径,避免重新修改文件资源路径的麻烦。

201

1.2.5 什么是CSS样式表?CSS在网络程序设计中有什么作用?

CSS是一种叫做样式表(stylesheet)的技术,在制作网页时采用CSS技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。 只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者不同的网页的外观和格式。

它的作用可以达到:

(1)在几乎所有的浏览器上都可以使用。

(2)以前一些非得通过图片转换实现的功能,现在只要用CSS就可以轻松实现,从而更快地下载页面。

(3)使页面的字体变得更漂亮,更容易编排,使页面真正赏心悦目。 (4)你可以轻松地控制页面的布局 。

(5)你可以将许多网页的风格格式同时更新,不用再一页一页地更新了。你可以将站点上所有的网页风格都使用一个CSS文件进行控制,只要修改这个CSS文件中相应的行,那么整个站点的所有页面都会随之发生变动。 1.2.6

在Web页面中使用CSS有哪些方法?

1、在HTML标签中使用行内(in-line)样式; 2、在HTML页面中嵌入(Embed)一个样式表;

3、在HTML页面中链接(Link)一个外部样式表文件(.css); 4、通过import关键字导入(Importing)样式表。 1.2.7

JavaScript语言有何特点?

1、是一种脚本编程语言

JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其他脚本语言一样,JavaScript同样也是一种解释性语言。

2、基于对象的语言

JavaScript是一种基于对象的语言,它能运用自己已经创建的对象。 3、简单性

JavaScript类似于Java,但比Java简单。它是一种弱类型的语言,并未使用严格的数据类型,变量也不必先声明再引用。

4、安全性

JavaScript是一种安全的语言,它不允许访问本地的硬盘,不能将数据存到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互,从而有效地增强了数据的安全性。

5、动态性

JavaScript是动态的,它可以直接对用户的输入做出响应,无须经过Web服务程序。它对用户输入的响应,是以事件驱动的方式进行的,直接在客户端完成,不需要传回服务器进行处理,从而能够得到很快的响应效果。

6、跨平台性

JavaScript依赖于浏览器,与操作环境无关。只要浏览器支持JavaScript,它就能正确执行。

202

1.2.8 如何理解JavaScript语言是基于对象的,而不是面向对象的?

JavaScript具有一些面向对象的基本特征,如:它可以根据需要创建自己的对象,而且它还有自己的以原型对象为基础的继承机制。但JavaScript没有正式的类的概念,它没有提供以类为基础的抽象、继承、重载等面向对象语言的典型功能;另外,JavaScript是弱类型的,这也不符合经典面向对象语言的要求。 1.2.9

使用JavaScript语言中的时间对象,在页面中输出当前时间,要求格式为“2007年10月10日 10时00分20秒”。

203

第2章 ASP.NET开发入门

2.1 填空

VS2005在构建Web应用时,使用的是ASP.NET 2.0技术。 要想查看VS2005最全面的联机帮助资料,必须安装MSDN。

在创建Web项目的时候,有3个“位置”选项可选,代表3种开发Web应用的方式:文件系统、HTTP和FTP。

在创建了新的Web项目后,默认创建的主页名称为:Default.aspx。 网页的编辑有两种状态,“设计”和“源”。在设计状态下,系统显示的是所见即所得的网页效果预览;在源状态下,系统显示的是网页的源代码。

2.2 问答

2.2.1

简述使用VS2005创建网站的基本过程。

1)建立新的Web项目。 2)在页面中添加控件。 3)编写后台代码。 4)运行。

204

第3章 C#语言基础

3.1 填空

C#支持的数据类型包括两大类:值类型和引用类型。

在C#中,布尔(bool)类型是用来表示“真”和“假”这两个概念的,分别采用true 和false 两个值来表示。

C#支持的字符类型采用Unicode字符集,其标准字符长度为16 位。

在C#中,引用类型的变量不直接存储所包含的值,而是指向它所要存储的值,也就是说,引用类型存储实际数据的地址。

类是面向对象编程的基本单位,是一种包含数据成员、函数成员和嵌套类型的数据结构。

C#字符串是使用string关键字声明的一个字符数组。

字符串类中还有一个公共属性Length,可以用来获取字符串的长度。

在C#的4种循环语句中,可以使用break语句结束循环,执行后续语句;也可以用continue语句来停止本次循环体语句的执行,继续进行下一轮循环。

3.2 问答

3.2.1

C#语言的值类型和引用类型有何区别?

C#支持的数据类型包括两大类:值类型和引用类型。值类型通常被分配在堆栈上,它的变量直接包含变量的实例,使用的效率比较高。引用类型总是分配在托管堆上,引用类型的变量通常仅包含一个指向实例的指针,系统通过该指针来引用其实例。 3.2.2

在C#语言中结构类型和类的区别是什么?

类和结构都可以包含构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型等,但结构是值类型,而类是引用类型。 3.2.3

C#中的变量命名原则有哪些?

变量名必须以字母、下划线或@开头。

其后的字符可以是字母、数字和下划线,而不能包含空格、标点符号、运算符等其他符号。

变量名不能与C#中的关键字名称相同。 变量名不能与C#中的库函数名称相同。

205

3.2.4 请描述C#中for循环的一般形式、各部分的作用和执行过程。

for后面括号中的三部分都是可选的,其中初始化和循环还可以由多个语句(用逗号隔开)组成。“初始化”是循环变量赋初值部分,通常为赋值语句。“条件”是循环控制条件,为布尔表达式。“循环”是循环变量的修改部分,用来表达循环变量的增量,通常是赋值语句,常用自加、自减运算。语句部分为循环体,可以是一条语句,也可以是复合语句和空语句。

for语句的执行过程是:先执行初始化部分,再计算条件表达式的值,若该值为假,则退出循环,若为真,则执行循环体。然后执行“循环”部分,对循环变量进行修改后再计算条件表达式,若为真,再一次执行循环体,如此重复,直到条件表达式的值为假时退出循环。 3.2.5

编写一个程序段,在页面中显示一个9*9乘法口诀表。

1)用for语句实现。 for (int i = 1; i < 10; i++) {

for (int j = 1; j <= i; j++) {

int sum=i*j;

Response.Write(i.ToString()+\ }

Response.Write(\ }

2) 用while语句实现。 int i=1,j=1; while(i<10) {

j = 1;

while (j<=i) {

int sum=i*j;

Response.Write(i.ToString()+\ j++; } i++;

Response.Write(\ }

206

3.2.6 编写一个程序段,完成对字符串“欢迎大家来到畅想网络学校”的处理,实现如下的功能:

1、输出字符串的长度。

2、输出字符串中“畅”出现的位置。 3、将字符串中的“学校”替换为“学院”,然后输出。

4、将“学习”两个字添加到字符串的后面,并输出新的字符串。 string str = \欢迎大家来到畅想网络学校\Response.Write(str.Length);

Response.Write(str.IndexOf(\畅\str=str.Replace(\学校\学院\Response.Write(str); str = str + \学习\Response.Write(str);

207

第4章 ASP.NET基本控件

4.1 填空

对ASP.NET来说,Web控件共包括四种类型:HTML控件、HTML服务器控件、ASP.NET服务器控件和用户自定义控件。

ASP.NET服务器控件是可以触发事件的对象,它使用事件驱动模式进行处理。 编程使用ASP.NET控件时,主要工作是对控件的属性和事件进行处理。

TextBox控件用于接受用户的输入或显示只读文本,可以把它配置为单行模式或多行模式,还可以配置为接受密码。

与Button控件不同,在客户端点击HyperLink控件后不向服务器回送页面,而是直接导航到目标URL。

整个页面上的所有RadioButton控件按照GroupName属性进行分组,同一组中同时只能有一个RadioButton控件可以被选中。

Panel控件用于包含其他控件,它提供以下几个功能:控制所包含控件的可见性、控制所包含控件的外观和方便以编程方式生成控件。

4.2 问答

4.2.1

以Button控件为例,说明使用ASP.NET服务器控件的基本步骤和方法。

1)将Button控件从工具箱中拖动到页面中。 2)设置Button控件的各种属性。

3)在设计界面双击Button按钮,在Click事件中增加事件处理代码。 4.2.2

在ASP.NET中,Web控件共有哪几种类型?请做简单的介绍。

1)HTML控件

最初可用于任何HTML页面的控件,也都可用在ASP.NET页面中。 2)HTML服务器控件

在HTML控件的基础上加以改进,功能有所增强,最重要的是可以在服务器端进行处理。

3)ASP.NET服务器控件

也称为ASP控件,是ASP.NET的核心内容之一。它们在服务器端集成,遵循.NET Framework面向对象的编程模型。ASP.NET服务器控件执行时在客户端表现为HTML,但具有更强的服务器端处理能力,从而在大多数情况下替代了传统的HTML控件。除了功能更强、种类更多之外,ASP.NET服务器控件克服了传统HTML控件在属性设置方面的缺点,可在服务器端通过程序预置。

4)用户自定义控件

208

由开发人员创建的控件。 4.2.3

TextBox控件有哪几种模式?分别用在什么场合?

TextBox控件用于接受用户的输入或显示只读文本,它具有三种模式: 1)单行模式:适用于输入少量文本内容,不需要换行。

2)多行模式:适用于输入大量文本内容,需要换行,并且显示滚动条。 3)密码模式:适用于输入密码等隐私内容。 4.2.4

在ASP.NET中,有哪几种按钮控件?它们有什么区别?

有Button控件、LinkButton控件和ImageButton控件。它们的功能都一样,可以对单击事件做出响应,但LinkButton控件的外观为一个超链,而ImageButton的外观为一个图片。 4.2.5

ASP.NET中的image控件与HTML中的img标签的区别是什么?它们有什么联系?

Image控件是一个可编程控件,可以通过设置其属性或者编写程序改变所显示的图片,以及外观。Img标签是HTML中显示图片的基本元素,无法使用服务器端程序对其进行动态修改。但是,Image控件在服务器端进行编译后,将转换成img标签,发送到用户浏览器。 4.2.6

简述ASP.NET的事件驱动模式。

ASP.NET使用事件驱动模式进行处理。ASP.NET服务器控件是可以触发事件的对象。用户在浏览器上对ASP.NET控件所执行的任何行为都可能触发事件;服务器端代码响应事件,并运行事件处理方法中的代码。所有的ASP.NET事件都在服务器端处理,这与传统HTML控件事件的处理方式有本质区别(ASP.NET控件都有一个runat=server属性)。有些事件触发后立即发送到服务器,另一些事件则在触发后被存储,直到下一次页面回传到服务器时再处理。

209

第5章 ASP.NET高级控件

5.1 填空题

可以通过简单地改变Calendar控件的属性来得到丰富的外观表现形式。

当用户在Calendar控件中选择一天、整周或整月时,将触发SelectionChanged事件。 FileUpload控件在客户端包含一个文本输入框和一个浏览按钮,供用户选择本地文件。

5.2 问答题

5.2.1

Calendar控件是一个功能丰富的控件,该控件本身的功能主要包括哪些?

显示一个日历,包括一个月的详细日历和其他一些相关信息 允许用户选择一天、一周或一个月 允许用户移到下一个月或上一个月 以编程方式控制选定日期的显示 5.2.2

FileUpload控件在上传文件时,使用相对路径还是绝对路径?上传文件的基本步骤是什么?

使用绝对路径。基本步骤为: 1、创建文件存放的文件夹。

2、向页面上拖放一个FileUpload控件、一个Button控件。 3、修改Button控件的单击处理事件。 4、确定文件存放的绝对路径。

5、适用FileUpload控件的SaveAs方法将文件保存到指定的位置。 5.2.3

Wizard控件的主要功能是什么?

Wizard控件可以为用户提供完成多个步骤操作的方法,并方便地在各步之间前后导航。 Wizard 控件提供了一种简单的机制,允许轻松地生成步骤、添加新步骤或重新安排步骤。无需编写代码即可生成线性和非线性的导航。该控件能够自动创建合适的按钮,例如“下一步”、“上一步”、“完成”等,并允许用户自定义控件的用户导航。通过配置可以使某些步骤只能被导航一次。默认情况下,Wizard控件显示一个包含导航链接的工具栏,这让用户可以从当前步骤自由转到其他步。

210

第6章 构建网站

6.1 填空

填写文件类型扩展名 文件类型 .aspx 说明 基于ASP.NET的动态Web文件,该文件可包含Web控件和其他业务逻辑。 运行时要编译的类源代码文件。一般存放在App_Code子目录;但如果是Web内容文件的代码隐藏文件,则与其主文件位于同一目录。 已编译的类库文件。一般存放在Bin子目录中。或者,可以将类的源代码放在App_Code子目录下。 母版页,它定义应用程序中引用母版页的其他网页的布局。 用于确定HTML元素格式的层叠样式表文件。 用HTML代码编写的静态Web文件。 .cs、.jsl、.vb .dll .master .css .htm、.html Global.asax文件是ASP.NET应用程序所拥有的一个全局性文件,它保存在应用程序的根文件夹中。

新创建的Global.asax包括5个空的全局事件处理函数:Application_Start、Application_End、Application_Error、Session_Start和Session_End。

Request对象表示客户端向服务器发送的HTTP请求。 Response对象用于服务器向客户端发送数据。

Response对象用来控制发送给客户端的信息,包括直接发送信息给浏览器、重定向到另一个URL或设置Cookie等。

Application对象在某个应用程序的所有用户之间共享信息,并在服务器运行期间持久地保存数据。

Application对象在第一次有客户端请求本应用程序的任何URL时创建。 Session对象存储特定的用户会话所需要的信息。

Server对象提供了访问服务器对象的方法和属性,可以获取服务器的信息,如应用程序路径等。

6.2 问答

6.2.1

简述Global.asax和Web.config的作用。

Global.asax文件是ASP.NET应用程序所拥有的一个全局性文件。该文件中定义了应用程序的全局事件,它保存在应用程序的根文件夹中;ASP.NET的配置信息存储在XM格式的Web.config文件中。可以出现在ASP.NET应用程序的多个目录中。

211

6.2.2 Response对象什么作用?

Response对象用来控制发送给客户端的信息,包括直接发送信息给浏览器、重定向到另一个URL或设置Cookie等。 6.2.3

Request对象什么作用?

可以使用Request对象访问基于HTTP请求传递的所有信息,如用POST或GET方法传递的参数、Cookie和客户端证书等。 6.2.4

Application对象什么作用?有什么优缺点?

Application对象在某个应用程序的所有用户之间共享信息,并在服务器运行期间持久地保存数据。

Application对象在第一次有客户端请求本应用程序的任何URL时创建。它存储在服务器的内存中,因此与在数据库中存储和检索信息相比,它的执行速度更快。也正是由于它存储在内存中,Application对象适合用于存储那些数量较少、不随用户的变化而变化的常用数据。

需要注意的是:1、由于Application对象存储在服务器内存中,因此每当停止或重新启动应用程序时,Application对象都将丢失。例如,如果更改了Web.config文件,则要重新启动应用程序,所有应用程序状态都将丢失;2、Application对象采用自由线程模式,即Application对象数据可由多个线程同时访问。因此,有时可能需要以线程安全的方式进行应用程序变量的更新。 6.2.5

Session对象的作用以及与Application对象的区别?

Session对象存储特定的用户会话所需要的信息。当用户在应用程序的页之间跳转时,存在Session对象中的变量不会被清除,只要该用户还在访问应用程序的页面,这些变量就始终存在。

当用户请求来自应用程序的Web页时,如果该用户还没有会话,系统会自动为其创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。

Session对象与Application对象的本质区别在于:每个应用程序只有一个Application对象,被所有用户所共享;而每个应用程序可以有多个Session对象,应用程序的每个访问用户都有自己独享的一个Session对象。 6.2.6

Server对象什么作用?

Server对象提供了访问服务器对象的方法和属性,可以获取服务器的信息,如应用程序路径等。

212

第7章 应用ADO.NET编程

7.1 填空

使用ADO.NET进行编程主要包括:使用Connection对象来连接数据库,使用Command对象来执行数据库命令,使用DataReader对象来读取数据;或者使用DataAdapter对象将数据库中的数据填充到DataSet对象中,对DataSet对象中的数据进行操作等。

使用DataAdapter读取操作方式,调用Fill方法,将数据从数据库读到DataSet。 使用DataAdapter更新操作方式,调用Update方法,将对DataSet表的更改写回数据库。

DataSet是数据库的内存驻留表示形式,它是支持ADO.NET的断开式、分布式数据方案的核心对象。

7.2 问答

7.2.1

ADO.NET可以提供哪几种数据访问模式?各种数据访问模式分别有什么特点?

ADO.NET提供连接式和非连接式两种数据访问模式。

非连接式的数据访问主要使用DataSet对象。使用DataSet对象不一定非要与数据库相连接,但一般情况下,我们是把DataSet对象作为数据库(或部分数据库、或来自多个数据源的数据)在内存中的一个副本来使用。程序可以象直接操作数据库中的数据一样操作DataSet对象中的数据。

连接式的数据访问主要使用DataReader对象。当需要处理大量数据时,一次性地将所有数据导入到内存再进行处理并不是一个好的方法。使用DataReader对象必须用连接的方式来访问数据库,一次只从数据库中取得必要的数据进行处理,处理完后,再从数据库中继续读入需要的数据。使用DataReader对象采用的是一种只读的、向前的、快速的数据库读取机制,这样可以提高应用程序的执行效率。 7.2.2

简述DataSet。

DataSet可以看成内存驻留形式的数据库,它提供与真正数据库一致的关系编程模型。一个DataSet对象内可以包含多个DataTable对象,由Tables属性表示;表与表之间的关系由Relations属性表示;DataTable由列的集合(属性名为Columns)以及约束的集合(属性名为Constraints)来定义表的架构;DataTable还包含行的集合(属性名为Rows),表示表中的数据,其中每一行数据由一个DataRow对象表示。 7.2.3

Command对象有哪两种主要方法?分别什么作用?

ExecuteReader()方法将查询结果以一个SqlDataReader对象返回;ExecuteNonQuery()

213

方法可执行任意的Update、Insert和Delete命令。

214

第8章 Web数据访问

8.1 问答

8.1.1

ASP.NET中主要提供了哪些Web数据控件?

DataSource控件、GridView控件、DataList控件和DetailsView控件等等。 8.1.2

DataSource控件的作用是什么?

DataSource控件允许用户使用不同类型的数据源,如数据库、XML文件或中间层业务对象等。DataSource控件可以连接到数据源,从中检索数据,可以设置参数和行为(如分页、缓存等),并允许其他界面控件绑定到数据源,以便在网页中显示数据,而无需代码。使用DataSource控件还可以进行数据库的修改。 8.1.3

GridView控件有什么功能?

GridView控件有数据浏览功能,GridView控件有数据修改功能,GridView控件有编程管理功能。 8.1.4

DataList控件有什么功能?

DataList控件可用于模板化地列表显示数据,可用自定义的格式显示数据库的各行信息,利用DataList控件可以完成数据项的就地编辑功能。

215

第9章 数据绑定

9.1 填空

数据绑定的几种方式:嵌入式代码块、ASP.NET表达式、数据绑定表达式、嵌入式表达式。

嵌入式代码块写在<% %>标签中。 嵌入式表达式写在<%= %>标签中。 ASP.NET表达式写在<%$ %>标签中。 数据绑定表达式写在<%# %>标签中。

使用数据绑定表达式主要有两方面的功能,其中最常用的是与数据源绑定,其语法为: <%# 数据绑定表达式 %> Web数据控件通过DataSource控件来访问数据库。

将GridView控件绑定到ADO.NET数据源的一般方法为:GridView控件.DataSource = 数据源对象; GridView控件.DataBind();

Repeater控件是一个数据绑定容器控件,它可对数据源中的记录列表。 完成下面数据查询显示的程序 private void FillData() {

SqlConnection conn = new SqlConnection(connectionString);

string cmdText = \BY USERID\

SqlCommand command = new SqlCommand(cmdText, conn); try {

//打开连接 conn.Open(); //执行查询

SqlDataReader dr = command.ExecuteReader(); //数据绑定

DropDownList2.DataSource = dr; DropDownList2.DataTextField = \ DropDownList2.DataValueField = \ DropDownList2.DataBind(); dr.Close(); }

catch (SqlException sqlex) {

//显示错误信息

Response.Write(sqlex.Message + \ }

216

finally

{ //关闭数据库链接 conn.Close(); } }

9.2 问答

9.2.1

简述嵌入式表达式的作用和使用范围。

作用是:在页面加载时,将表达式的值直接插入到页面当中。使用范围是公共对象属性、页类成员变量的值、成员函数的返回值、Application变量和Session变量的值。

217

第10章 其他内容

218

第11章 “畅想网络学院”

219

第12章 Windows Sockets API简介

12.1 填空

套接字一般分三种类型:字节流套接字(Stream Socket)、数据报套接字(Datagram Socket)、原始套接字(Raw Socket)。

在所有基于Windows Sockets的程序里,初始化函数WSAStartup()和终止函数WSACleanup()是必须使用的。

如果使用1.1版的Windows Sockets,那么WSAStartup()函数第一个参数应该取值0x101。

Windows Sockets提供了函数WSAGetLastError()来获取最近的错误码。 创建套接字使用socket()函数。

socket()函数的第二个参数决定套接字的类型,字节流套接字取值SOCK_STREAM,数据报套接字取值SOCK_DGRAM,原始套接字取值SOCK_RAW。

socket()函数出错返回INVALID_SOCKET。 关闭套接字使用closesocket()函数。

将套接字绑定到一个已知地址使用bind()函数。 bind()函数出错返回SOCKET_ERROR。 指示一个套接字等待连接使用listen()函数。 listen()函数出错返回SOCKET_ERROR。 接受客户连接是通过accept()函数来完成的。 accept()函数出错返回INVALID_SOCKET。

客户端通过调用connect()函数来完成同服务器端的连接。 connect()函数出错返回SOCKET_ERROR。

若无错误发生,send()函数返回实际发送的字节数;若发生错误,返回SOCKET_ERROR。

若无错误发生,recv()函数返回读入的字节数;如果连接已中止,返回0;如果出错返回SOCKET_ERROR。

若无错误发生,sendto()返回所发送数据的总数;否则返回SOCKET_ERROR错误。 若无错误发生,recvfrom()返回读入的字节数;如果连接已中止,返回0;否则返回SOCKET_ERROR错误。

gethostbyname()函数返回与指定的主机名对应的主机信息。 gethostbyaddr()函数返回与IP地址相应的主机信息。

220

第13章 TCP Socket编程

13.1 填空

填写TCP流程的空缺:

Serversocket()bind() linsten() accept() recv()send()Data (request)Data (reply)Clientsocket()connect() send()recv()closesocket() closesocket()221

第14章 UDP Socket编程

14.1 填空

填写UDP流程的空缺:

Serversocket() bind() recvfrom()sendto()Data (request)Data (reply)Clientsocket()bind() sendto()recvfrom()closesocket() closesocket()222

第15章 Raw Socket编程

15.1 问答

15.1.1 论述网卡的工作模式。

1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。

2)多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其他主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。

3)直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。

4)混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。

网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。

223

第16章 WinPcap编程

224

第17章 多线程编程

17.1 填空

Windows使用CreateProcess()函数创建进程,用CreateThread()函数创建线程。

等待进程或者线程执行结束使用WaitForSingleObject()或WaitForMultipleObjects()函数。

17.2 问答

17.2.1 根据进程与线程的设置,操作系统大致分为哪些类型?

(1)单进程、单线程,MS-DOS大致是这种操作系统;

(2)多进程、单线程,多数UNIX(及类UNIX的LINUX)是这种操作系统; (3)多进程、多线程,Win32(Windows NT/2000/XP等)、Solaris 2.x和OS/2都是这种操作系统;

(4)单进程、多线程,VxWorks是这种操作系统。 17.2.2 简述网络服务器的设计模式。

服务器可以分为循环式(iterative)、并发式(concurrent)和反应式(reactive)等几大类。

循环式服务器在处理一个请求时,要么将其他请求排成队列,要么忽略它们,它最适合以下两种服务:1、短期服务;2、不经常运行的服务。

并发式服务器同时处理多个客户请求,要么使用多线程,要么使用多进程。它非常适合“I/O操作频繁(I/O-bound)”的服务或“执行时间会变化”的长周期服务。

反应式服务器通常是通过“同步事件多路分离”策略来实现在一个线程中同时处理多个请求。它本质上是循环式的。因此存在以下局限性:1、编程的复杂性增加;2、可靠性和性能降低。

225

第17章 多线程编程

17.1 填空

Windows使用CreateProcess()函数创建进程,用CreateThread()函数创建线程。

等待进程或者线程执行结束使用WaitForSingleObject()或WaitForMultipleObjects()函数。

17.2 问答

17.2.1 根据进程与线程的设置,操作系统大致分为哪些类型?

(1)单进程、单线程,MS-DOS大致是这种操作系统;

(2)多进程、单线程,多数UNIX(及类UNIX的LINUX)是这种操作系统; (3)多进程、多线程,Win32(Windows NT/2000/XP等)、Solaris 2.x和OS/2都是这种操作系统;

(4)单进程、多线程,VxWorks是这种操作系统。 17.2.2 简述网络服务器的设计模式。

服务器可以分为循环式(iterative)、并发式(concurrent)和反应式(reactive)等几大类。

循环式服务器在处理一个请求时,要么将其他请求排成队列,要么忽略它们,它最适合以下两种服务:1、短期服务;2、不经常运行的服务。

并发式服务器同时处理多个客户请求,要么使用多线程,要么使用多进程。它非常适合“I/O操作频繁(I/O-bound)”的服务或“执行时间会变化”的长周期服务。

反应式服务器通常是通过“同步事件多路分离”策略来实现在一个线程中同时处理多个请求。它本质上是循环式的。因此存在以下局限性:1、编程的复杂性增加;2、可靠性和性能降低。

225

本文来源:https://www.bwwdw.com/article/yy0.html

Top