![VB_NET中的网络编程.ppt_第1页](http://file1.renrendoc.com/fileroot2/2020-1/6/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe1.gif)
![VB_NET中的网络编程.ppt_第2页](http://file1.renrendoc.com/fileroot2/2020-1/6/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe2.gif)
![VB_NET中的网络编程.ppt_第3页](http://file1.renrendoc.com/fileroot2/2020-1/6/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe3.gif)
![VB_NET中的网络编程.ppt_第4页](http://file1.renrendoc.com/fileroot2/2020-1/6/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe4.gif)
![VB_NET中的网络编程.ppt_第5页](http://file1.renrendoc.com/fileroot2/2020-1/6/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe/3f2c1344-8392-41bb-bb18-ac3f5a96d7fe5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一. 网络编程基础知识 二. .Net中的网络编程类 三. .Net网络程序基本结构 四. .Net多线程技术 五. 在网络编程中结合多线程技术,本章目录,一网络编程基础知识1.1 Socket,Socket通常也称为“套接字”,用于描述IP地址和端口。它实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则没有办法建立联系并相互通信。正如打电话之前,双方必须各自拥有一台电话机。 Socket同样可以被视为一个数据通道,这个通道架设在应用程序端(客户端)和服务器端之间,而后,数据的读取(接收)和写入(发送)均针对这个通道来进行。,本章目录,socket 是面向客户/服务器
2、模型而设计的,针对客户和服务器程序提供不同的socket功能调用。 客户端需要申请一个socket (相当于一个想打电话的人首先获得一部电话机),系统为之分配一个socket号;服务器端则拥有全局公认的 socket ,任何客户端都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。,本章目录,Socket 是访问 Internet 使用得最广泛的方法。在Internet上有很多用于提供网络服务的主机,这些主机一般运行了多个服务软件,提供不同的服务(比如电子邮件服务、ftp服务、http网页服务等)。而每种服务实际上都会打开一个Socket,并绑定到一个端口上
3、,不同的端口对应于不同的服务。,本章目录,可见,Socket正如其英文原意(“插座”)那样,象一个多孔插座。而一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。,本章目录,1.2 网络协议,网络协议是网络上计算机为交换数据所必须遵守的通信规范和消息格式的集合。目前常用的网络协议有TCP协议和UDP协议。,本章目录,.TCP协议 TCP是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个
4、顺序的无差错的数据流。发送方和接收方的两个Socket之间必须建立连接,以便在TCP协议的基础上进行通信。当一个Socket(通常都是Server Socket)等待建立连接时,另一个Socket可以请求连接,一旦这两个Socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。,本章目录,.UDP协议 UDP是User Datagram Protocol(数据报协议)的简称,是一种无连接的协议。每个数据报都是一个独立的信息,在其中包括了完整的源地址或目的地址信息,因此无需要建立发送方和接收方的连接。 每个数据报在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目
5、的地的时间以及内容的正确性都是不能被保证的。,本章目录,二 .Net中的网络编程类,.Net Framework为应用程序访问Internet提供了分层的、可扩展的以及受管辖的网络服务。其名字空间System.Net和System.Net.Sockets包含丰富的类可以开发多种网络应用程序。.Net采用的分层结构允许应用程序在不同的控制级别上访问网络,这些级别几乎囊括了Internet的所有需要 从Socket套接字到普通的请求/响应。,本章目录,抛开ISO/OSI模型的7层构架,单从TCP/IP模型上的逻辑层面上看,.Net网络编程类可以视为包含3个层次:请求/响应层、应用协议层、传输层。
6、WebReqeust和WebResponse 代表了请求/响应层,支持Http、TCP和UDP的类组成了应用协议层,而Socket类处于最底层的传输层。,本章目录,System.Net.Sockets 命名空间为需要访问网络底层功能的开发人员提供了Socket接口。 System.Net 命名空间中的所有其他网络访问类都是建立在Socket的基础上的。如TCPClient、TCPListener 和 UDPClient 类,以及提供用于网络访问的基础数据流的NetworkStream类等。,本章目录,2.1 IPAddress类和IPEndPoint类 在System.Net命名空间中,有两个
7、专门用于处理各种类型的IP地址信息的类型:IPAddress类和IPEndPoint类。 1.IPAddress类 IPAddress类用于表示一个IP地址,可以使用Parse方法直接创建IPAddress的实例: IPAddress ip=IPAddress.Parse(); IPAddress类还提供了4个只读属性,分别代表程序中使用的特殊IP地址:(1)Any:代表本地系统可用的任何IP地址。 (2)Broadcast:代表本地网络的IP 广播地址。 (3)Loopback:代表系统的回送地址。 (4)None:代表系统上没有网络接口。,本章目录,另外,在Syste
8、m.Net命名空间下,包含有一个Dns类,可以利用该类的GetHostName()方法找到本地系统的主机名,然后再用GetHostByName()找到主机的IP地址。 2.IPEndPoint类 IPEndPoint对象通过一个IP地址/端口的组合来确定一个连接端点。其构造函数为: IPEndPoint(IpAddress address,int port); 该类有几个常用的属性: (1)Address:得到或者设置IP地址。 (2)AddressFamily: 获取网际协议 (IP) 地址族。 (3)Port: 获取或设置终结点的 TCP 端口号.,本章目录,例: Dim localEnd
9、Point As New IPEndPoint ( IPAddress.Parse(), 1024)指定IP和Port,本章目录,2.2 Socket类 Socket类的构造函数为: public Socket( AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType); addressFamily 参数指定Socket 使用的寻址方案,对于网络上的IP通信来说,addressFamily总是使用AddressFamily.InterNetwork这个值。 socketType
10、 参数指定Socket 的类型。 protocolType 参数指定 Socket 使用的协议。,本章目录,本章目录,例: Imports System.Net.sockets Imports S Dim Sserver As Socket = Nothing Sserver = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) 使用TCP协议,Socket类中常用的成员函数 (1)绑定地址(服务器端创建Socket后首先要做 的工作) void Bind(IPEndPoint localEP
11、); 使 Socket与 一个本地端点相关联。 只有服务器端的Socket需要进行绑定。而且只有在 进行绑定后才能在服务器端调用Socket的其它功能。 例:Dim localEndPoint As New IPEndPoint ( IPAddress.Parse(“”), 1024)指定IP地址和端口 Sserver.Bind(localEndPoint)把socket和该端点绑定,本章目录,(2)监听连接请求(只在服务器端需要这一步骤) void Listen(int backlog); backlog指定最多可以接受的传入连接数。 设置套接字处于监听状态。当数据到达某个
12、端口时,它会向主机发送通知消息。 例: Sserver.Listen(100)开始监听,最多接受100个连接。,本章目录,(3)接受连接请求(只在服务器端需要这一步骤) Socket Accept(); 注意返回值是一个新建立的Socket。 当服务器端正在监听的Socket调用Accept成员函数,并且接收到了某个客户端发来的连接请求时,就会新建立一个Socket,专门用来和这个客户端进行通信。 例:Dim newsocket As Socket = Sserver.Accept() 注意:服务器端和客户端真正进行收发数据都是通过 在建立连接时新建的socket进行的。在上面的例子里 就是通
13、过newsocket,而不是通过Sserver 。,本章目录,(4)建立连接(只在客户端需要这一步骤) void Connect(IPEndPoint ip); 用来与远程服务器建立连接。连接之后,可以用Send()发送数据或用Receive()函数接收数据。 例:Dim Sclient = New Socket ( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Dim localEndPoint As New IPEndPoint ( IPAddress.Parse(“”), 1024) 指
14、定要连接的服务器端的端点 Sclient.Connect(localEndPoint),本章目录,(5)发送数据 可以使用Socket类的Send()或SendTo()成员函数。 int Send(byte buffer); int SendTo(byte buffer,IPEndPoint remoteIP); 向指定的地址发送数据。 例: SClient.Send(Encoding.Unicode.GetBytes(TextBox1.Text) 例子中的Encoding类是在System.Text名字空间中定义的(所以需要在程序中Import System.Text)。另外采用Unicod
15、e编码才能正确传送汉字。,本章目录,(6)接收数据 使用Socket类的Receive()或ReceiveFrom()成员函数来接收数据。 int Receive(byte buffer); int ReceiveFrom(byte buffer,ref IPEndPoint ip) 例:Dim bytes(1024) As Byte 用来存储接收到的字节newsocket.Receive(bytes) newsocket是服务器端接受一个连接请求后新建的一个socket,本章目录,(7)关闭Socket 使用Socket类的Close()成员函数来关闭不再使用的socket。 例: asoc
16、ket.Close() asocket是之前创建的一个socket,本章目录,三.Net网络程序基本结构,基于IP的通信有两种通信类型:面向连接的和无连接的。在面向连接的通信中,Socket使用TCP协议来建立两个IP地址端点之间的会话。一旦建立了这种连接,就可以在设备之间可靠地传输数据。 为了建立面向连接的Socket通信,服务器和客户端必须分别进行编程(也就是分别为服务器端和客户端编写一个独立的程序)。,本章目录,面向连接的网络程序基本结构及流程 服务器端 客户端,本章目录,3.1 服务器端程序的基本流程 (1)建立Socket。 (2)将Socket绑定到用于TCP通信的本地IP地址和端
17、口上。 (3)设置Socket处于监听状态。 (4)等待客户端连接请求,当收到连接请求时则与客户端建立连接。 (5)与客户端发送数据或接受数据。 (6)关闭Socket。,本章目录,3.2 客户端程序的基本流程 (1)建立Socket。 (2)与服务器进行连接。 (3)发送或接受数据。 (4)关闭Socket。,本章目录,3.3 使用TcpListener和TcpClient类 在System.Net.Sockets.命名空间下,有两个专门 用于TCP协议编程的类:TCPClient和TCPListener类。 这两个类提供了直观的容易使用的属性和方法,从而 降低了TCP协议编程的难度。,本章
18、目录,. TcpListener(服务器端使用) TcpListener 类提供一些简单方法,用于在阻塞同步模式下侦听和接受传入连接请求。客户端使用TcpClient或Socket来连接TcpListener。 可以使用IPEndPoint、本地 IP 地址及端口号或者仅使用端口号,来创建 TcpListener。可以将本地 IP 地址指定为 Any,将本地端口号指定为 0(如果希望基础服务提供程序自动分配这些值)。,本章目录,Start()方法用来开始侦听传入的连接请求。Start() 将对传入连接进行排队,直到调用 Stop()方法或它 已经完成MaxConnections排队为止。可使用
19、 AcceptSocket() 或 AcceptTcpClient()从传入连接请 求队列提取连接。这两种方法将阻塞。如果要避免阻 塞,可首先使用 Pending()方法来确定队列中是否有 可用的连接请求。调用Stop()方法来关闭TcpListener。,本章目录,. TcpClient(客户端使用) TcpClient类是一个 TCP 客户端,它提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。它可以和TCPListener或者使用TCP创建的服务器端Socket进行连接。 可以使用下面两种方法之一连接到服务器端: (1)创建一个TcpClient,并调用三个可用
20、的Connect方法之一 : public void Connect(IPEndPoint):使用指定的远程网络终结点将客户端连接到远程 TCP 主机。,本章目录,public void Connect(IPAddress, int):使用指定的 IP 地址和端口号将客户端连接到 TCP 主机。 public void Connect(string, int):将客户端连接到指定主机上的指定端口。 (2)使用远程主机的主机名和端口号创建TcpClient。此构造函数将自动尝试一个连接。 要发送和接收数据,可以使用 GetStream()方法来获取一个NetworkStream。调用 Netwo
21、rkStream的Write()和Read()方法与远程主机之间发送和接收数据。使用 Close()方法释放与TcpClient 关联的所有资源。,本章目录,3.4 NetworkStream(网络流)类 NetworkStream类提供用于网络访问的基础数据 流。它提供了在阻塞模式下通过 Stream套接字发送和 接收数据的方法。要创建NetworkStream,必须提供 连接的Socket。也可以指定 NetworkStream 对所提 供的Socket具有哪些FileAccess权限。 该类的Write()和Read()方法用于简单的单线程同 步阻塞 I/O。若要使用不同的线程来处理I/
22、O,则可以 使用BeginWrite()/ EndWrite()和BeginRead()/ EndRead()方法进行通信。,本章目录,. NetworkStream的构造函数 (1) public NetworkStream(Socket):为指定的Socket创建 NetworkStream类的新实例。 (2) public NetworkStream(Socket, bool):用指定的Socket所属权为指定的Socket初始化 NetworkStream 类的新实例。 (3) public NetworkStream(Socket, FileAccess):用指定的访问权限为指定的S
23、ocket创建 NetworkStream类的新实例。 (4) public NetworkStream(Socket, FileAccess, bool):用指定的访问权限和指定的Socket所属权为指定的Socket创建 NetworkStream类的新实例。,本章目录,四.Net多线程技术,进程:应用程序的运行实例,是应用程序的一次动态执行。 线程:进程内部的一个执行单元。从根本上说,线程是可由操作系统调度的一个最简单的代码单元,负责执行包含在进程的地址空间中的程序代码。 应用程序域 :在.NET框架中,提出了应用程序域的概念。所有程序编译后生成的都是中间代码,而这些中间代码的隔离、加载
24、和卸载以及安全边界的提供都是通过应用程序域来实现。一个进程可以包含一个或多个应用程序域,而一个应用程序域又可以包含一个或多个线程。无论在同一个进程之内还是在不同的进程之间,每个应用程序域之间都是相互无关的,这些不同的应用程序域之间只能通过远程通讯来实现消息和对象的传递,本章目录,本章目录,多线程的意义:充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。 由于同一进程的所有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的
25、分配等问题更加易于解决。,本章目录,VB.Net对多线程的支持 由于Visual Basic.NET是基于.NET框架的,而.NET框 架的重要组成部分CLR(Common Language Runtime, 通用语言运行时)内置支持多线程应用,可以通过系统的 System.Threading.Thread类直接建立多线程应用程序, 并且支持线程池等高级功能。因此任何.NET框架结构下的 语言,包括Visual Basic.NET在编写多线程应用程序的时 候,都可以直接利用系统类所提供的对象和方法,而不再 需要使用Win32 API,因此可以大大减轻开发的困难和错 误所发生的几率。,本章目录,
26、Thread类(线程类)的使用 在System.Threading名字空间中定义了Thread类, 用来创建和维护线程。它能够创建并控制线程,设置其优 先级并获取其状态。它拥有Start, Stop, Resume, Abort, Suspend和Join (wait for)等方法操纵线程,还可以通过 如Sleep, IsAlive, IsBackground, Priority, ApartmentState和ThreadState等方法查询和设置线程状 态。,本章目录,Thread类的使用方法 (1)创建线程 可以通过创建Thread类的实例来创建一个新线程, 并结合AddressOf(
27、)函数来指定让这个线程执行的任务(一 般是一个过程或者函数)。 例: Import System.Threading Public Sub threadtask() End Sub Dim newthread As Thread = New Thread(AddressOf theadtask ) 这样就创建了一个专门运行threadtask()过程的线程。,本章目录,(2)让线程开始运行 在创建了一个线程后,线程并没有真正开始运行。需要调用Thread类的Start()成员函数来开始线程的运行。 例: newthread.Start() newthread这个线程现在才会开始运行。 (3)让
28、线程休眠一段时间 可以调用Thread类的Sleep()成员函数来让线程休眠一段时间。 例1: newthread.Sleep(2000) 让newthread休眠2秒 例2:Thread.CurrentThread.Sleep(500) 让当前线程休眠500毫秒,本章目录,(4)挂起和恢复线程 Thread类的Suspend()成员函数可以挂起一个线程(相当于让它暂停运行)。而Resume()成员函数则可以使一个被挂起的线程重新开始运行。 (5)停止一个线程的运行 Thread类的Abort()成员函数可以终止一个线程的运行。在调用Abort之前,需要先调用IsAlive()判断线程处于活动状态。 例: Ifnewthread.IsAliveThen newthread.Abort() EndIf,本章目录,(6)获得线程当前的状
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国分线压线两用机市场调查研究报告
- 2025年智能三段式充电器项目可行性研究报告
- 2025至2031年中国履带行业投资前景及策略咨询研究报告
- 2025年发动机下护板项目可行性研究报告
- 2025年全身数码贴纸相机项目可行性研究报告
- 2025至2030年中国鱼形硅胶餐垫数据监测研究报告
- 2025至2030年细胞松弛素项目投资价值分析报告
- 2025至2030年正像解剖体视显微镜项目投资价值分析报告
- 委托腾退协议效力
- 电影项目开发投资合作与运营协议
- 小学总复习非连续性文本教学课件
- 2023年考研考博考博英语福建师范大学考试高频考点参考题库带答案
- DLT1123-2023年《火力发电企业生产安全设施配置》
- 新人教版八年级数学下册全册教案-八年级下册人教版全册教案
- 山西阳城阳泰集团西冯街煤业有限公司煤炭资源开发利用方案和矿山环境保护与土地复垦方案
- 金锁记优秀课件
- 安徽华星化工有限公司杀虫单废盐资源化处理项目环境影响报告书
- 人教版高中英语必修一单词表(默写版)
- 海德堡HRT共焦激光角膜显微镜
- 世界国家地区区域划分 Excel对照表 简
- 幼儿园手工教学中教师指导行为研究-以自贡市幼儿园为例
评论
0/150
提交评论