西北工业大学网络编程技术重点Word格式文档下载.docx

上传人:b****4 文档编号:16503426 上传时间:2022-11-24 格式:DOCX 页数:22 大小:407.36KB
下载 相关 举报
西北工业大学网络编程技术重点Word格式文档下载.docx_第1页
第1页 / 共22页
西北工业大学网络编程技术重点Word格式文档下载.docx_第2页
第2页 / 共22页
西北工业大学网络编程技术重点Word格式文档下载.docx_第3页
第3页 / 共22页
西北工业大学网络编程技术重点Word格式文档下载.docx_第4页
第4页 / 共22页
西北工业大学网络编程技术重点Word格式文档下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

西北工业大学网络编程技术重点Word格式文档下载.docx

《西北工业大学网络编程技术重点Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《西北工业大学网络编程技术重点Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。

西北工业大学网络编程技术重点Word格式文档下载.docx

与socket()的第一个参数相同含义

charsa_data[14];

//协议地址,内容因具体协议而不同

};

3、sockaddr_in结构体指定Internet通信域的地址结构

structsockaddr_in{

shortsin_family;

//必须为AF_INET

u_shortsin_port;

//端口

structin_addrsin_addr;

//IP地址

charsin_zero[8];

四、基于TCP协议的Socket编程模型

五、C/S端基本思路

服务器程序需执行:

1初始化套接字接口,调用套接字动态链接库。

2创建套接字并将其与本机网络地址结构绑定。

3让程序处于监听状态,监听客户机的连接请求。

4若有连接请求,则处理并建立连接;

若未有连接请求,则阻塞并等待连接请求。

5接收或发送数据。

6关闭套接字。

7注销套接字接口,释放套接字动态链接库所占用资源。

客户机程序需执行:

8初始化套接字接口,调用套接字动态链接库。

9创建套接字。

10向服务器发送连接请求。

11接收或发送数据。

12关闭套接字。

13注销套接字接口,释放套接字动态链接库所占用资源。

六、基于UDP协议的Socket编程模型(两种)

模型

(一)的特点:

1、应用程序双份是对等的。

使用数据报套接字通信时都经过6个阶段:

2、双方必须确切地知道对方的网络地址,且将约定好的自己的网络地址绑定到自己的套接字上。

3、每次发送或接收数据报时,所使用的sendto()和recvfrom()中要包括对方的网络地址信息。

4、recvfrom()在没有收到数据前,默认情况下会阻塞,程序不向下执行。

模型

(二)的特点:

1、应用程序双份是不对等的。

服务器要先行启动,处于被动的等待访问状态;

客户机则可随时主动请求访问服务器。

2、完成一次通信时服务器要经过6个阶段:

而客户机不需要绑定套接字。

3、服务器将套接字绑定到周知的端口或指定的端口,且客户机必须确切地知道服务器端套接字使用的网络地址。

4、客户机套接字使用动态分配的自由端口,不需要进行绑定。

服务器事先不必知道客户机套接字使用的网络地址。

5、客户机必须先发送数据报,服务器收到后才能知道客户机的地址,才能给客户机回送数据报。

七、多线程,阻塞,非阻塞模式优缺点

1、阻塞模式:

优点:

1、I/O操作工作情况确定,包括调用、等待和返回三个阶段。

2、大部分情况下,操作都能成功完成,易编程实现。

缺点:

若需要建立多个套接字连接来为多个客户机服务时,或收发数据量不均衡时,或I/O时间不确定时,该模式性能低下,甚至无能为力。

解决方法:

使用多线程机制,并发运行为多个客户机服务。

2、非阻塞模式:

不会过多地占用CPU的控制权,及时释放系统资源。

编程时需要编写更多的代码,以把握成功调用I/O函数的时机。

I/O操作的随机性大,难以操作。

需要详细分析每次调用收到的WSAEWOULDBLOCK错误,采取相应的对策。

解决办法:

使用5种“套接字I/O模型”,通过异步的方式对一个或者多个套接字上进行的通信加以管理。

八、进程、线程概念

进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。

线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。

九、多线程编程使用函数、定义、作用

1、工作线程函数

UINTThreadFunction(LPVOIDpParam)

{

//线程处理代码

While

(1)

//处理

}

return0;

2、创建线程函数CreateThread()

HANDLECreateThread(

 LPSECURITY_ATTRIBUTESlpThreadAttributes,

 SIZE_TdwStackSize,

 LPTHREAD_START_ROUTINElpStartAddress,

 LPVOIDlpParameter,

 DWORDdwCreationFlags,

 LPDWORDlpThreadId

函数的功能:

一个进程的主线程是由操作系统自动生成的。

若要让一个主线程创建额外的子线程,则可以通过调用CreateThread()函数完成。

终止线程函数

3、终止线程的四种方式:

1)线程内部调用ExitThread()函数退出当前线程的执行。

函数功能:

线程内部调用该函数,退出线程执行。

函数定义:

voidExitThread(DWORDdwExitCode);

2)在线程外部利用线程句柄调用TerminateThread()函数强行终止一个线程的运行。

在线程外部调用该函数,强制终止线程运行。

函数的定义:

BOOLTerminateThread(

HANDLEhThread,

DWORDdwExitCode

3)工作线程函数正常返回(隐含调用ExitThread()函数)。

这是确保所有线程资源被系统正确回收的最佳方法。

4)包含线程的进程终止运行。

当整个进程已经正常终止,则进程内部线程所使用的资源已被系统正常回收。

4、挂起与恢复线程函数

挂起线程函数:

DWORDSuspendThread(HANDLEhThread)

恢复线程函数:

DWORDResumeThread(HANDLEhThread)

激活线程,恢复线程工作。

函数执行时,会检查线程的挂起次数,若挂起次数为0,表明该线程不处于挂起状态,否则该线程挂起次数值将减1。

5、睡眠线程函数:

voidSleep(DWORDdwMilliseconds)

线程使用sleep()函数睡眠,在睡眠时间内不被系统调度。

十、线程通信:

多线程Socket编程设计思路

方式2的设计思路

1.创建字节流套接字。

2.绑定本地服务器的网络地址。

3.调用listen函数,使套接字处于监听状态。

4.接收外来连接请求,accept函数返回新套接字。

5.与客户端进行数据交互。

6.关闭套接字,返回步骤4。

关闭操作可能由以下任意一种情况引发:

▪数据传输完毕,服务器主动关闭连接。

▪客户机已关闭连接。

▪服务器接收数据超时。

方式3的设计思路

4.以绑定的套接字为参数,创建工作线程,

5.工作线程完成客户端的服务请求,关闭线程的套接字并结束线程。

方式4的设计思路

4.以绑定的套接字为参数,创建第一个工作线程,

5.第一个工作线程处理客户机的连接请求,然后再创建第二个工作线程与客户机传输数据。

十一、*基于I/O模型的Socket编程,五种I/O模型及特点,基本概念使用效率分析比较

1、Select模型又称为选择模型,它可以使WindowsSockets应用程序同时对多个套接字进行管理,调用select()函数可以获取指定套接字的状态。

然后调用SocketAPI实现数据发送和接收等操作。

能够从单个线程的多个套接字上进行多重连接及I/O操作。

select()函数中使用集合来管理多个套接字。

默认情况下,套接字集合中包含64个元素,最多可以管理的套接字数量为1024个。

尽管Select模型可以同时管理多个连接,但对集合的管理比较繁琐。

每次在使用套接字发送和接收数据之前,都需要调用select()函数判断套接字的状态,这会导致CPU额外的负担,从而影响应用程序的工作效率。

2、WSAAsyncSelect模型又称为异步选择模型,它为每个套接字绑定一个消息。

当套接字上出现事先设置事件时,操作系统会给应用程序发送这个消息,从而使应用程序可以对该事件做相应的处理。

在系统开销不大的情况下可以同时处理许多个客户端连接。

即使应用程序不需要窗口,也要至少设计一个窗口用于处理套接字事件。

而且,在一个窗口中处理大量的事件也可能成为性能瓶颈。

3、WSAEventSelect模型又称为事件选择模型,它允许在多个套接字上接收以事件为基础的网络事件通知。

应用程序在创建套接字后,调用WSAEventSelect()函数将事件对象与网络事件集合相关联。

当网络事件发生时,应用程序以事件的形式接收网络事件通知。

4、重叠I/O模型又称为OverlappedI/O模型,基本设计原理是可以让应用程序使用重叠的数据结构一次投递多个I/O请求,当系统完成I/O操作后通知应用程序。

重叠I/O模型是真正意义上的异步I/O模型。

在应用程序中调用输入/输出函数后,程序将立即返回。

当I/O操作完成后,系统会通知应用程序。

5、完成端口(Completionport)是一种在Windows服务平台上比较成熟和高效的I/O操作方法,它使用线程池处理异步I/O请求。

利用完成端口模型,应用程序可以管理成百上千个套接字。

十二、针对五种模型的编程思路

1、基于Select模型的Socket编程思路

1.初始化WindowsSockets环境。

2.创建用于监听的套接字ListenSocket。

3.将套接字ListenSocket绑定到本地地址的9990端口。

4.开始监听。

5.将套接字ListenSocket设置为非阻塞模型。

6.将套接字ListenSocket添加到SocketArray数组中。

7.服务器程序,需要始终运行,接收和处理来自客户端的请求都包含在一个While(TRUE)循环中:

1程序首先将当前所有的套接字(包括监听套接字ListenSocket和稍后创建的与每个客户端进行通信的套接字)添加到ReadSet和WriteSet集合中,然后调用select()函数判断这些套接字是否处于读/写就绪状态。

2当套接字ListenSocket处于读就绪状态时,说明有来自客户端的连接请求需要处理。

如果其他套接字处于读就绪状态,说明有来自已连接客户端的数据。

3依次对数组SocketArray中所有的套接字进行判断,并对处于读就绪状态(在ReadSet集合中)的套接字进行处理。

4程序调用FD_ISSET()函数来判断指定的套接字是否在ReadSet集合中。

如果套接字ListenSocket在ReadSet集合中,则调用accept()函数接收来自客户端连接请求,得到与客户端进行通信的套接字AcceptSocket,并将其添加到SocketArray数组中;

如果其他套接字在ReadSet集合中,则接收数据。

5如果指定的套接字在WriteSet集合中,并且该套接字接收到的数据量大于其发送的数据量,则发送数据 

2、基于WSAAsyncSelect模型的Socket编程思路

1创建窗口。

2初始化WindowsSockets环境。

3创建套接字。

4用WSAAsyncSelect()函数定义使用Window窗口接收FD_ACCEPT事件消息。

5设置并绑定地址和端口,监听指定的套接字。

6循环获取消息队列中的消息,将消息分派到窗口例程进行处理。

7判断消息类型:

a)如果触发了FD_ACCEPT事件,则程序接收来自客户端的请求,得到与客户端通信的套接字,并为该套接字订阅FD_READ、FD_WRITE和FD_CLOSE消息。

b)如果触发了FD_CLOSE事件,则关闭套接字,释放其占用的资源。

c)如果触发了FD_READ事件,则调用recv()函数接收来自客户端的请求。

d)如果触发了FD_WRITE事件,则调用send()函数向客户端发送数据。

3、基于WSAEventSelect模型的服务器程序设计思路

(1)初始化WindowsSockets环境,并创建用于监听的套接字。

(2)创建事件对象。

(3)将新建的事件对象与监听套接字相关联,并注册该套接字关注的网络事件集

合,通常为FD_ACCEPT和FD_CLOSE。

(4)等待所有事件对象上发生注册的网络事件,并对网络事件进行处理。

(5)如果触发了FD_ACCEPT事件,则程序接收来自客户端的请求,得到与客户端通

信的套接字,并为该套接字创建相关联的事件对象,注册该套接字关注的网络

事件集合,通常为FD_READ、FD_CLOSE和FD_WRITE。

(6)如果触发了FD_CLOSE事件,则关闭套接字,释放其占用的资源。

(7)如果触发了FD_READ事件,则调用recv()函数接收来自客户端的请求。

(8)如果触发了FD_WRITE事件,则调用send()函数向客户端发送数据。

4、基于重叠I/O模型的服务器程序设计思路

1创建一个套接字,开始在指定的端口上监听连接请求。

2接受一个客户机的连接请求。

3建立并初始化重叠结构WSAOVERLAPPED。

4以WSAOVERLAPPED结构为参数,在套接字上投递WSARecv请求。

5用WSAWaitForMultipleEvents函数等待重叠操作返回的结果。

6使用WSAResetEvent函数重设当前这个用完的事件对象。

7使用WSAGetOverlappedResult函数取得重叠调用的返回状态。

8服务器程序进一步处理接收到的数据。

9同第5步一样,在套接字上继续投递WSARecv请求,重复步骤6~9。

5、基于完成端口模型的服务器应用程序的设计思路:

1创建完成端口对象。

2创建n个工作线程,n等于当前计算机中CPU核心的数量。

将新建的完成端口对象作为参数传递到工作线程中。

工作线程的主要功能是检测完成端口的状态,如果有来自客户端的数据,则接收数据,并将接收到的数据发送回客户端程序。

3初始化WindowsSockets环境,创建用于监听的套接字,并将其绑定到本地地址的端口。

4监听来自客户端的连接请求。

5接收来自客户端的连接请求,得到与客户端进行通信的套接字AcceptSocket,并将该套接字与步骤

(1)中创建的完成端口对象相关联。

6以异步方式在套接字AcceptSocket上接收数据。

这里只是执行接收数据的操作,真正接收数据是在工作线程中完成的。

十三、原始套接字与标准套接字的区别

原始套接字置根于操作系统的网络核心。

标准套接字(字节流套接字和数据报套接字)悬浮于TCP和UDP协议的外围

十四、原始套接字编程模型Ping程序sniffer

1、利用原始套接字实现Ping程序

1)创建原始套接字,设定协议为IPPROTO_ICMP。

2)创建并初始化ICMP头。

3)调用setsockopt函数对socket属性选项进行设置。

4)调用sendto函数将ICMP请求发给目的主机。

5)调用recvfrom函数接收任何ICMP响应。

若到达目的主机,会回发一条回应答复消息。

若未到达目的主机,则由中间路由回发一条错误消息。

若到达目的主机,但未做出响应,则超时。

2、利用RawSocket实现网络嗅探(sniffer)

1)让网卡进入混杂模式并建立和设置原始套接字为亲自处理报头。

2)接收IP数据包。

3)解析IP数据包,对IP包的协议类型进行判断:

若是ICMP包,则进一步解析ICMP包。

若是TCP包,则进一步解析TCP包。

若是UDP包,则进一步解析UDP包。

4)捕获的数据更深入解析。

十五、底层网络:

网络数据包捕获原理

以太网具有共享性质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。

IEEE802.3标准的以太网采用的是持续CSMA的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。

十六、*WinPcap编程模型

十七、NDIS编程(基本概念)

NDIS(NetworkDriverInterfaceSpecification)是一种网络驱动接口规范,在核心态下工作。

给数据交换出了一个灵活的环境,传输协议可用它与网卡驱动程序进行通信。

所有的网络通信最终必须通过NDIS完成,所以这是网络数据拦截的良好位置。

十八、ASP与ASP.NET的优缺点分析

ASP的优点:

自动编译、带有动态内容的Web页、ASCII文本发送给客户端浏览器、源代码不可访问

ASP的缺点

仅两种非类型语言:

VBScript和JavaScript

ASP页需要解释

代码、HTML和文本的混合,象意大利面条一样

使用同一文件

额外的功能代码

代码不能重用

没有调试机制

先关闭Web服务器才能安装新版本的DLL

ASP.NET的优点:

支持强类型语言,如C#、VB

编译页可改进执行速度

内置方法Trace可以帮助调试页

提供声明性服务器控件

通过继承机制支持代码的重用。

ASP代码与HTML设计和文本分离

无需注册组件

十九、*ASP.NET的6个对象以及每个对象的功能和作用

Page对象

Page对象由System.Web.UI中的Page类实现,该类与.aspx文件相关联。

这些文件在运行时被编译为Page对象,并缓存在服务器内存中。

每个.aspx文件对应一个Page对象。

.aspx与后台代码类(局部类)合并生成页面类。

Page对象是页面类的实例。

Response对象

在页面输出要显示的内容,重定向

Request对象

获得页面输入,URL传参,Form表单提交

Application对象

Application对象是由System.Web.HttpApplicationState类实现的,主要维护应用程序状态,与应用程序的生命周期有关。

在客户端第一次从某个特定的ASP.NET应用程序虚拟目录中请求任何URL资源时创建,在应用程序或进程被撤销时结束。

Session对象

Session对象的主要作用是在服务器端存储特定信息,这些信息都是局部的,是特定于某一个用户的。

Session中的信息也被称为会话状态。

Session对象可以实现在网站内部不同页面之间共享信息,但共享的信息属于特定用户。

在浏览器第一次请求应用程序的某个页面时,会话开始;

在会话超时或被关闭时,会话结束。

Server对象

Server对象由HttpServerUtility类实现,该对象专门为处理服务器上的特定任务而设计。

对应了一组方法用于实现相应功能。

二十、Web控件的分类:

标准、复杂、验证、数据

二十一、课中所讲控件的功能、特点、作用。

控件常用属性

1、文本输入控件

文本框为用户提供了一种向Web窗体页中输入信息(包括文本、数字和日期)的方法。

主要属性有:

TextMode、Text、ID

2、控制转移控件

控制转移控件主要作用是在不同页面之间响应。

常用的有四种,分别是:

Button、ImageButton、LinkButton、HyperLink

3、选择控件

单选框一般成组出现,用于接受用户多选一的输入方式。

要求用户必须并且只能选择一个。

常用属性包括:

Text、ID、Checked、GroupName

复选框一般有两种常见应用,一是用于获取用户是否同意信息,二是一组复选框向用户提供选择项,从而接受用户复选。

Text、ID、Checked

4、列表控件

下拉列表DropDownList实现的列表选择是多选一的选择方式,主要应用的属性有:

Items选项集合、SelectedIndex、SelectedItem、AutoPostBack

二十二、*ADO.NET编程,连接与非连接程序设计思路

连接式:

采用Command对象和DataReader对象相结合的方式进行数据访问、操作。

Command对象作用:

对数据库执行SQL语句或存储过程,对数据库进行查询、增删改操作。

DataReader对象作用:

提供对数据只读的、向前的数据读取方式,不能修改数据库,且一条记录读过后,不能再重读一次。

非连接式:

二十三、数据适配器、数据集、数据控件、数据绑定的基本概念

数据适配器:

vDataAdapter:

它起着桥梁的作用,在DataSet和其源数据存储区之间进行数据检索和保存。

vDataAdapter对象可以隐藏和Connection、Command对象沟通的细节,通过DataAdapter对象建立、初始化DataTable,从而和DataSet对象结合起来在内存存放数据表副本,实现离线式数据库操作。

数据集:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1