Socket网络通信程序设计.ppt

上传人:w****2 文档编号:15593246 上传时间:2020-08-22 格式:PPT 页数:41 大小:649.50KB
返回 下载 相关 举报
Socket网络通信程序设计.ppt_第1页
第1页 / 共41页
Socket网络通信程序设计.ppt_第2页
第2页 / 共41页
Socket网络通信程序设计.ppt_第3页
第3页 / 共41页
点击查看更多>>
资源描述
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结构,客户端只能完成浏览、查询、数据输入等基本功能,绝大部分工作须由服务器承担,使得服务器的负担很重。 采用C/S结构时,客户端和服务器端都能够处理任务,这虽然对客户机的要求较高,但因此可以减轻服务器的压力,并且也减轻了网络的运行负荷,8.1 网络应用系统的体系结构,2、系统开发比较 C/S结构是建立在中间产品基础之上的,应用程序的维护、移植和互操作相对B/S要复杂的多。如果客户端是在不同的操作系统上,C/S结构的软件需要开发不同版本的客户端软件。 相比于B/S结构,C/S技术发展历史更为悠久,所以,C/S技术的应用更成熟、系统的运行更可靠。 3、系统升级维护比较 C/S结构的功能模块一旦有修改或升级,就需要重新维护或安装全部的客户端软件,所以系统的升级维护成本高。而B/S结构却大大简化了客户端,因为只要客户机能上网使用浏览器即可,B/S结构系统的开发、维护等几乎都集中在服务器端,所以,不仅方便、灵活,而且成本也更低。,8.2 Socket与网络通信,人与人之间的交流可以概括为:与哪个人或哪些人,使用哪种语言(汉语还是英语),采用什么方式(话音还是文字)。与此过程类似,计算机之间的通信也有多种方法,在C#中,当获取了通信计算机的相关主机对象及其消息,并明确了通信所采用的相关协议后,就可以利用Socket类实现计算机之间的网络通信。,8.2.1 定义和获取主机消息,1.System.IO命名空间 1.定义主机对象 IP地址和端口号可以确定具体的主机对象,System.Net命名空间中的IPEndPoint类表示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域名系统)类提供了一系列静态的方法,用于获取提供本地或远程域名等功能,常用方法有: 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.网络协议的层次划分 为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)以及应用层(Application 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(网络类型)、SocketType(数据传输类型)及ProtocolType(采用的网络协议)。 System.Net.Sockets命名空间包含了一个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采用的一种标准网络协议。它是由ARPA(Advanced Research Project Agency:美国高等研究计划署)于1977年到1979年推出的一种网络体系结构和协议规范。IP是网络层协议最主要的协议,TCP是传输层最主要的协议。 TCP是一种面向连接的协议,即利用TCP传送数据的时候,首先必须先使用低级通信协议IP在计算机之间建立连接(也就是所谓的握手),然后才可以传输数据。 TCP通过可靠递交和定序,在支持双向通信的客户机与服务器之间提供可靠的字节通信。它去除了分组乱序和分组丢失等很多UDP(UDP协议介绍请参考8.4)的缺陷,从而简化了网络通信。UDP关心的是传输数据分组,而TCP关注的是建立连接发送和接收字节流的网络连接。 随着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)分别对新建项目的相应控件,按下表所示的内容进行属性值设置。,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个RichTextBox控件到该窗体上。 (2)分别对新建项目的相应控件,按下表所示的内容进行属性值设置。,8.3.3 基于TCP的网络通信程序设计,1.一个简单的网上聊天程序设计(文本版) 客户机端聊天程序设计 【示例代码:chpt8-1a ChatClient】 (详细代码见教材),客户机端聊天程序窗体设计(文本版),8.3.3 基于TCP的网络通信程序设计,1.一个简单的网上聊天程序设计(文本版) 程序测试 :,聊天程序测试(文本版),8.3.3 基于TCP的网络通信程序设计,2.一个简单的网上聊天程序设计(图文版) 该网上聊天程序采用NetworkStream类以网络流的方式实现网络通信,并以Unicode编码格式传输数据,从而达到图文化的网上聊天目的。,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的网络通信程序设计,服务器端聊天程序设计 【示例代码: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的网络通信程序设计,聊天程序测试:,聊天程序测试(图文版),8.4 UDP与网络通信程序设计,8.4.1 UDP概述 UDP(UserDatagramProtocol),即 “用户数据报协议”,是一种无连接的协议,计算机利用UDP协议进行数据传输的时候,发送方只需要知道对方的IP地址和端口号就可以发送数据,而并不需要进行连接。 由于UDP缺乏双方的握手信号,当计算机之间利用UDP传送数据的时候,发送方只管发送数据,而并不确认数据是否被对方接收。这样就无法确保数据被真正传送到目标。所以,UDP的可靠性不高,在网络上传输重要数据时不采用UDP。但是UDP也有自己的一些特点: 虽然UDP协议无法保证数据可靠性,但因为它是基于无连接的协议,能够消除生成连接的系统延迟,所以速度比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.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类实现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网络上系统之间文件传送的协议,采用FTP可使 Internet用户高效地从网上的FTP服务器下载大信息量的数据文件,并保存到本地计算机上;或者将本地计算机的文件传送到远程计算机。FTP使得网络能够充分地实现资源共享和信息传递。 FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP 连接用于数据传输。在.NET中并没有提供对FTP的封装,因此需要使用套接字或TcpListener和TcpClient类实现FTP服务器和客户端功能。,8.5.2 FTP服务的工作原理,与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持 FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。 使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有那一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了 Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。,8.5.3 网络文件传输的FTP程序设计,在实际介绍示例程序设计之前,首先简介与其相关的资源定位的基本知识。 1.资源定位符 URL URL是统一资源定位符(Uniform Resoure Locator)的缩写,对于Intranet服务器或万维网服务器上的目标文件,可以使用“统一资源定位符 (URL)”地址(该地址以“http:/”开始)。Web 服务器使用“超文本传输协议(HTTP)”,例如, URL的一般格式为: scheme:/host:port/path?query#fragment 其中,各参数的意义如下表所示。,8.5.3 网络文件传输的FTP程序设计,1.资源定位符 URL,8.5.3 网络文件传输的FTP程序设计,URN URN是统一资源名称(Uniform Resource Name)的缩写,主要用于唯一标识全球范围内由专门机构负责的稳定的信息资源,URN通常给出资源名称而不提供资源位置。 URI URI是统一资源标识符(Uniform Resource Identifier)的缩写,是一种用字符串唯一标识信息资源的工业标准(RFC2396),它使用的范围及方式都较为广泛,在XML中用URI引用来标识元素的命名空间(Namespace),URI包括了URL和URN,是二者的超集。,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服务器 的基本过程见教材,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服务器的文件上传,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!