Socket网络通信程序设计.ppt

上传人:小飞机 文档编号:5576191 上传时间:2023-07-29 格式:PPT 页数:41 大小:607.50KB
返回 下载 相关 举报
Socket网络通信程序设计.ppt_第1页
第1页 / 共41页
Socket网络通信程序设计.ppt_第2页
第2页 / 共41页
Socket网络通信程序设计.ppt_第3页
第3页 / 共41页
Socket网络通信程序设计.ppt_第4页
第4页 / 共41页
Socket网络通信程序设计.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《Socket网络通信程序设计.ppt》由会员分享,可在线阅读,更多相关《Socket网络通信程序设计.ppt(41页珍藏版)》请在三一办公上搜索。

1、2010.07,第8章 网络通信程序设计,学习要点,1.了解主机消息的定义和获取方法2.了解TCP协议、UDP协议和FTP协议的基本功能3.掌握利用Socket开发TCP应用程序、利用UdpClient类开发UDP应用程序以及利用FtpWebRequest类和WebClient类开发FTP应用程序的基本方法,8.1 网络应用系统的体系结构,1、系统性能比较 B/S占有优势的是其采用浏览器软件与服务器进行交互。任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端。不过,采用B/S结构,客户端只能完成浏览、查询、数据输入等基本功能,绝大部分工作须由服务器承担,使得服务器

2、的负担很重。采用C/S结构时,客户端和服务器端都能够处理任务,这虽然对客户机的要求较高,但因此可以减轻服务器的压力,并且也减轻了网络的运行负荷,8.1 网络应用系统的体系结构,2、系统开发比较 C/S结构是建立在中间产品基础之上的,应用程序的维护、移植和互操作相对B/S要复杂的多。如果客户端是在不同的操作系统上,C/S结构的软件需要开发不同版本的客户端软件。相比于B/S结构,C/S技术发展历史更为悠久,所以,C/S技术的应用更成熟、系统的运行更可靠。3、系统升级维护比较 C/S结构的功能模块一旦有修改或升级,就需要重新维护或安装全部的客户端软件,所以系统的升级维护成本高。而B/S结构却大大简化

3、了客户端,因为只要客户机能上网使用浏览器即可,B/S结构系统的开发、维护等几乎都集中在服务器端,所以,不仅方便、灵活,而且成本也更低。,8.2 Socket与网络通信,人与人之间的交流可以概括为:与哪个人或哪些人,使用哪种语言(汉语还是英语),采用什么方式(话音还是文字)。与此过程类似,计算机之间的通信也有多种方法,在C#中,当获取了通信计算机的相关主机对象及其消息,并明确了通信所采用的相关协议后,就可以利用Socket类实现计算机之间的网络通信。,8.2.1 定义和获取主机消息,命名空间1.定义主机对象IP地址和端口号可以确定具体的主机对象,System.Net命名空间中的IPEndPoin

4、t类表示IP地址和端口号。其构造函数的常用形式如下:public IPEndPoint(IPAddress address,int port)其中,address为IP地址,port为端口号。通常使用Parse()方法创建IPAddress的实例,然后再得到IPEndPoint对象,例如:IPAddress ip=IPAddress.Parse(127.0.0.1);IPEndPoint ipe=new IPEndPoint(ip,8888);,8.2.1 定义和获取主机消息,2.获取主机信息System.Net命名空间中的Dns(Domain Name System域名系统)类提供了一系列静

5、态的方法,用于获取提供本地或远程域名等功能,常用方法有:GetHostAddresses方法获取指定主机的IP地址,返回一个IPAddress类型的数组。构造函数为:public static IPAddress GetHostAddresses(string hostNameOrAddress);例如:IPAddress ip=Dns.GetHostAddresses();listBox1.Items.AddRange(ip);GetHostName方法获取本机主机名。例如:string hostname=Dns.GetHostName();,8.2.2 网络协议概述,1.网络协议的层次划分

6、 为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)以及应用层(Applica

7、tion Layer)。其中低四层完成数据传送服务,高三层面向用户。对于每一层,至少制定两项标准:服务定义和协议规范。前者给出了该层所提供的服务的准确定义,后者详细描述了该协议的动作和各种有关规程,以保证服务的提供。,8.2.2 网络协议概述,2.以用途划分的网络协议根据用途的不同,网络协议可划分如下:网络层协议:IP、ICMP、ARP、RARP传输层协议:TCP、UDP应用层协议:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS,8.2.3 Socket概述,Socket就是套接字,它是引用网络连接的特殊的文件描述符,由3个基本要素组成:AddressFamily(网络类型)

8、、SocketType(数据传输类型)及ProtocolType(采用的网络协议)。命名空间包含了一个Socket类,该类提供了与低级Winsock API的接口。Socket类的构造函数为:Socket(AddressFamily af,SocketType st,ProtocolType pt)下表列出了可用于IP通信的套接字组合。,8.3 TCP/IP与网络通信程序设计,8.3.1 TCP/IP概述TCP/IP(Transmission Control Protocol/Internet Protocol),即“传输控制协议/互连网协议”,是Internet采用的一种标准网络协议。它是由

9、ARPA(Advanced Research Project Agency:美国高等研究计划署)于1977年到1979年推出的一种网络体系结构和协议规范。IP是网络层协议最主要的协议,TCP是传输层最主要的协议。TCP是一种面向连接的协议,即利用TCP传送数据的时候,首先必须先使用低级通信协议IP在计算机之间建立连接(也就是所谓的握手),然后才可以传输数据。TCP通过可靠递交和定序,在支持双向通信的客户机与服务器之间提供可靠的字节通信。它去除了分组乱序和分组丢失等很多UDP(UDP协议介绍请参考8.4)的缺陷,从而简化了网络通信。UDP关心的是传输数据分组,而TCP关注的是建立连接发送和接收字

10、节流的网络连接。随着Internet网的发展,TCP/IP也得到进一步的研究开发和推广应用,成为Internet网上的“通用语言”。,8.3.2 基于TCP/IP的网络通信原理,8.3.3 基于TCP的网络通信程序设计,1.一个简单的网上聊天程序设计(文本版)服务器端聊天程序设计【示例代码:chpt8-1aChatServer】设计步骤如下:(1)新建一个C#项目,其Windows应用程序命名为ChatServer,并分别从“公共组件”和“容器”工具箱中拖放1个GroupBox控件、1个Label控件、1个Button控件以及2个RichTextBox控件到该窗体上。(2)分别对新建项目的相应

11、控件,按下表所示的内容进行属性值设置。,8.3.3 基于TCP的网络通信程序设计,1.一个简单的网上聊天程序设计(文本版)服务器端聊天程序设计【示例代码:chpt8-1aChatServer】(详细代码见教材),服务器端聊天程序窗体设计(文本版),8.3.3 基于TCP的网络通信程序设计,客户机端聊天程序设计【示例代码:chpt8-1a ChatClient】设计步骤如下:(1)新建一个C#项目,其Windows应用程序命名为ChatClient,并分别从“公共组件”和“容器”工具箱中拖放1个GroupBox控件、2个Label控件、2个TextBox控件、1个Button控件以及2个Rich

12、TextBox控件到该窗体上。(2)分别对新建项目的相应控件,按下表所示的内容进行属性值设置。,8.3.3 基于TCP的网络通信程序设计,1.一个简单的网上聊天程序设计(文本版)客户机端聊天程序设计【示例代码:chpt8-1a ChatClient】(详细代码见教材),客户机端聊天程序窗体设计(文本版),8.3.3 基于TCP的网络通信程序设计,1.一个简单的网上聊天程序设计(文本版)程序测试:,聊天程序测试(文本版),8.3.3 基于TCP的网络通信程序设计,2.一个简单的网上聊天程序设计(图文版)该网上聊天程序采用NetworkStream类以网络流的方式实现网络通信,并以Unicode编

13、码格式传输数据,从而达到图文化的网上聊天目的。,8.3.3 基于TCP的网络通信程序设计,服务器端聊天程序设计【示例代码:chpt8-1bChatServer】设计步骤如下:(1)新建一个C#项目,其Windows应用程序命名为ChatServer,并分别从“公共组件”和“容器”工具箱中拖放1个GroupBox控件、3个Label控件、2个TextBox控件、1个Button控件以及2个RichTextBox控件到该窗体上。(2)分别对新建项目的相应控件,按下表所示的内容进行属性值设置。,服务器端聊天程序窗体设计(图文版),8.3.3 基于TCP的网络通信程序设计,服务器端聊天程序设计【示例代

14、码:chpt8-1bChatServer】,8.3.3 基于TCP的网络通信程序设计,客户机端聊天程序设计【示例代码:chpt8-1b ChatClient】设计步骤如下:(1)新建一个C#项目,其Windows应用程序命名为ChatClient,并分别从“公共组件”和“容器”工具箱中拖放1个GroupBox控件、3个Label控件、2个TextBox控件、1个Button控件以及2个RichTextBox控件到该窗体上。(2)新建项目的相应控件的属性值设置类似上表,只是客户机程序的启动按钮文本为“连接”。,客户机端聊天程序窗体设计(图文版),8.3.3 基于TCP的网络通信程序设计,聊天程序

15、测试:,聊天程序测试(图文版),8.4 UDP与网络通信程序设计,8.4.1 UDP概述UDP(UserDatagramProtocol),即“用户数据报协议”,是一种无连接的协议,计算机利用UDP协议进行数据传输的时候,发送方只需要知道对方的IP地址和端口号就可以发送数据,而并不需要进行连接。由于UDP缺乏双方的握手信号,当计算机之间利用UDP传送数据的时候,发送方只管发送数据,而并不确认数据是否被对方接收。这样就无法确保数据被真正传送到目标。所以,UDP的可靠性不高,在网络上传输重要数据时不采用UDP。但是UDP也有自己的一些特点:虽然UDP协议无法保证数据可靠性,但因为它是基于无连接的协

16、议,能够消除生成连接的系统延迟,所以速度比TCP更快;UDP既支持一对一连接,也支持一对多连接,所以,可以使用广播的方式多地址发送,而TCP仅支持一对一通信;UDP与TCP的报头比是8:20,所以相对TCP,UDP消耗更少的网络带宽;UDP传输的数据有消息边界,而TCP传输的数据没有消息边界。,8.4.2 基于UDP的网络通信原理,8.4.3 利用UdpClient类实现UDP网络通信,1.UdpClient类简介UdpClient构造函数UdpClient构造函数的基本类型如下表所示。,8.4.3 利用UdpClient类实现UDP网络通信,UdpClient.Send方法UdpClient

17、.Send方法将UDP 数据报发送到远程主机。其用法如下表所示。UdpClient.Receive方法UdpClient.Receive方法返回已由远程主机发送的UDP数据报。,8.4.3 利用UdpClient类实现UDP网络通信,2.UdpClient类实现UDP网络通信的程序设计以下示例利用UdpClient类编写相应的UDP程序,实现一个简单的网络数据发送与接收的基本功能,分为发送方和接收方两个程序。发送方程序设计【示例代码:chpt8-3UDPSend】(详细代码见教材),发送方的UDP程序窗体设计,8.4.3 利用UdpClient类实现UDP网络通信,2.UdpClient类实现

18、UDP网络通信的程序设计以下示例利用UdpClient类编写相应的UDP程序,实现一个简单的网络数据发送与接收的基本功能,分为发送方和接收方两个程序。接收方程序设计【示例代码:chpt8-3UDPReceive】(详细代码见教材),接收方的UDP程序窗体设计,8.4.3 利用UdpClient类实现UDP网络通信,2.UdpClient类实现UDP网络通信的程序设计程序运行:,利用UdpClient类实现的网络数据发送与接收,8.5 FTP与网络通信程序设计,8.5.1 FTP概述FTP(File Transfer Protocol),即“文件传输协议”,是一个用于简化IP网络上系统之间文件传

19、送的协议,采用FTP可使 Internet用户高效地从网上的FTP服务器下载大信息量的数据文件,并保存到本地计算机上;或者将本地计算机的文件传送到远程计算机。FTP使得网络能够充分地实现资源共享和信息传递。FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP 连接用于数据传输。在.NET中并没有提供对FTP的封装,因此需要使用套接字或TcpListener和TcpClient类实现FTP服务器和客户端功能。,8.5.2 FTP服务的工作原理,与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持 FTP协议的客户机程序,连接到在远程主机上

20、的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有那一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了 Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anon

21、ymous,Internet上的任何人在任何地方都可使用该用户ID。,8.5.3 网络文件传输的FTP程序设计,在实际介绍示例程序设计之前,首先简介与其相关的资源定位的基本知识。1.资源定位符URLURL是统一资源定位符(Uniform Resoure Locator)的缩写,对于Intranet服务器或万维网服务器上的目标文件,可以使用“统一资源定位符(URL)”地址(该地址以“http:/”开始)。Web 服务器使用“超文本传输协议(HTTP)”,例如,为Microsoft网站的万维网URL地址。URL的一般格式为:scheme:/host:port/path?query#fragment

22、 其中,各参数的意义如下表所示。,8.5.3 网络文件传输的FTP程序设计,1.资源定位符URL,8.5.3 网络文件传输的FTP程序设计,URNURN是统一资源名称(Uniform Resource Name)的缩写,主要用于唯一标识全球范围内由专门机构负责的稳定的信息资源,URN通常给出资源名称而不提供资源位置。URIURI是统一资源标识符(Uniform Resource Identifier)的缩写,是一种用字符串唯一标识信息资源的工业标准(RFC2396),它使用的范围及方式都较为广泛,在XML中用URI引用来标识元素的命名空间(Namespace),URI包括了URL和URN,是二

23、者的超集。,8.5.3 网络文件传输的FTP程序设计,2.利用FtpWebRequest类实现文件传送FtpWebRequest类简介在System.Net命名空间下的FtpWebRequest 类,是.NET Framework 2.0 版中新增的类,可以实现文件传输协议(FTP)客户端。FtpWebRequest类实现文件传送的程序设计以下示例是一个实现针对FTP服务器的文件上传与下载功能的应用程序。【示例代码:chpt8-2a FTPUpDownload】,8.5.3 网络文件传输的FTP程序设计,【示例代码:chpt8-2a FTPUpDownload】(详细代码见教材)另:安装FTP

24、服务器 的基本过程见教材,FtpWebRequest类实现文件传送的窗体设计,8.5.3 网络文件传输的FTP程序设计,【示例代码:chpt8-2a FTPUpDownload】程序测试:,针对FTP服务器的文件下载,针对FTP服务器的文件上传,8.5.3 网络文件传输的FTP程序设计,3.利用WebClient类实现文件传送在System.Net命名空间下的WebClient类使用WebRequest类提供对资源的访问,提供了向URI标识的资源发送数据和从URI标识的资源接收数据的公共方法。最常用的是DownloadFile方法,它可将具有指定URI的资源下载到本地文件。WebClient类实现文件传送的程序设计以下示例是一个实现针对Web服务器的文件上传与下载功能的应用程序。【示例代码:chpt8-2b INetUpDownload】(详细代码见教材),8.5.3 网络文件传输的FTP程序设计,3.利用WebClient类实现文件传送【示例代码:chpt8-2b INetUpDownload】另:安装Web服务器的基本过程见教材,WebClient类实现文件传送的窗体设计,8.5.3 网络文件传输的FTP程序设计,【示例代码:chpt8-2b INetUpDownload】程序测试:,针对Web服务器的文件下载,针对Web服务器的文件上传,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号