Socket网络通信程序设计.ppt

上传人:za****8 文档编号:13190168 上传时间:2020-06-07 格式:PPT 页数:41 大小:649.51KB
返回 下载 相关 举报
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.2Socket与网络通信,人与人之间的交流可以概括为:与哪个人或哪些人,使用哪种语言(汉语还是英语),采用什么方式(话音还是文字)。与此过程类似,计算机之间的通信也有多种方法,在C#中,当获取了通信计算机的相关主机对象及其消息,并明确了通信所采用的相关协议后,就可以利用Socket类实现计算机之间的网络通信。,8.2.1定义和获取主机消息,1.System.IO命名空间1.定义主机对象IP地址和端口号可以确定具体的主机对象,System.Net命名空间中的IPEndPoint类表示IP地址和端口号。其构造函数的常用形式如下:publicIPEndPoint(IPAddressaddress,intport)其中,address为IP地址,port为端口号。通常使用Parse()方法创建IPAddress的实例,然后再得到IPEndPoint对象,例如:IPAddressip=IPAddress.Parse(127.0.0.1);IPEndPointipe=newIPEndPoint(ip,8888);,8.2.1定义和获取主机消息,2.获取主机信息System.Net命名空间中的Dns(DomainNameSystem域名系统)类提供了一系列静态的方法,用于获取提供本地或远程域名等功能,常用方法有:GetHostAddresses方法获取指定主机的IP地址,返回一个IPAddress类型的数组。构造函数为:publicstaticIPAddressGetHostAddresses(stringhostNameOrAddress);例如:IPAddressip=Dns.GetHostAddresses();listBox1.Items.AddRange(ip);GetHostName方法获取本机主机名。例如:stringhostname=Dns.GetHostName();,8.2.2网络协议概述,1.网络协议的层次划分为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(OpenSystemInterconnection/ReferenceModel)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(PhysicsLayer)、数据链路层(DataLinkLayer)、网络层(NetworkLayer)、传输层(TransportLayer)、会话层(SessionLayer)、表示层(PresentationLayer)以及应用层(ApplicationLayer)。其中低四层完成数据传送服务,高三层面向用户。对于每一层,至少制定两项标准:服务定义和协议规范。前者给出了该层所提供的服务的准确定义,后者详细描述了该协议的动作和各种有关规程,以保证服务的提供。,8.2.2网络协议概述,2.以用途划分的网络协议根据用途的不同,网络协议可划分如下:网络层协议:IP、ICMP、ARP、RARP传输层协议:TCP、UDP应用层协议:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS,8.2.3Socket概述,Socket就是套接字,它是引用网络连接的特殊的文件描述符,由3个基本要素组成:AddressFamily(网络类型)、SocketType(数据传输类型)及ProtocolType(采用的网络协议)。System.Net.Sockets命名空间包含了一个Socket类,该类提供了与低级WinsockAPI的接口。Socket类的构造函数为:Socket(AddressFamilyaf,SocketTypest,ProtocolTypept)下表列出了可用于IP通信的套接字组合。,8.3TCP/IP与网络通信程序设计,8.3.1TCP/IP概述TCP/IP(TransmissionControlProtocol/InternetProtocol),即“传输控制协议/互连网协议”,是Internet采用的一种标准网络协议。它是由ARPA(AdvancedResearchProjectAgency:美国高等研究计划署)于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-1aChatClient】设计步骤如下:(1)新建一个C#项目,其Windows应用程序命名为ChatClient,并分别从“公共组件”和“容器”工具箱中拖放1个GroupBox控件、2个Label控件、2个TextBox控件、1个Button控件以及2个RichTextBox控件到该窗体上。(2)分别对新建项目的相应控件,按下表所示的内容进行属性值设置。,8.3.3基于TCP的网络通信程序设计,1.一个简单的网上聊天程序设计(文本版)客户机端聊天程序设计【示例代码:chpt8-1aChatClient】(详细代码见教材),客户机端聊天程序窗体设计(文本版),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-1bChatClient】设计步骤如下:(1)新建一个C#项目,其Windows应用程序命名为ChatClient,并分别从“公共组件”和“容器”工具箱中拖放1个GroupBox控件、3个Label控件、2个TextBox控件、1个Button控件以及2个RichTextBox控件到该窗体上。(2)新建项目的相应控件的属性值设置类似上表,只是客户机程序的启动按钮文本为“连接”。,客户机端聊天程序窗体设计(图文版),8.3.3基于TCP的网络通信程序设计,聊天程序测试:,聊天程序测试(图文版),8.4UDP与网络通信程序设计,8.4.1UDP概述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.5FTP与网络通信程序设计,8.5.1FTP概述FTP(FileTransferProtocol),即“文件传输协议”,是一个用于简化IP网络上系统之间文件传送的协议,采用FTP可使Internet用户高效地从网上的FTP服务器下载大信息量的数据文件,并保存到本地计算机上;或者将本地计算机的文件传送到远程计算机。FTP使得网络能够充分地实现资源共享和信息传递。FTP使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。在.NET中并没有提供对FTP的封装,因此需要使用套接字或TcpListener和TcpClient类实现FTP服务器和客户端功能。,8.5.2FTP服务的工作原理,与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有那一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous,Internet上的任何人在任何地方都可使用该用户ID。,8.5.3网络文件传输的FTP程序设计,在实际介绍示例程序设计之前,首先简介与其相关的资源定位的基本知识。1.资源定位符URLURL是统一资源定位符(UniformResoureLocator)的缩写,对于Intranet服务器或万维网服务器上的目标文件,可以使用“统一资源定位符(URL)”地址(该地址以“http:/”开始)。Web服务器使用“超文本传输协议(HTTP)”,例如,,8.5.3网络文件传输的FTP程序设计,1.资源定位符URL,8.5.3网络文件传输的FTP程序设计,URNURN是统一资源名称(UniformResourceName)的缩写,主要用于唯一标识全球范围内由专门机构负责的稳定的信息资源,URN通常给出资源名称而不提供资源位置。URIURI是统一资源标识符(UniformResourceIdentifier)的缩写,是一种用字符串唯一标识信息资源的工业标准(RFC2396),它使用的范围及方式都较为广泛,在XML中用URI引用来标识元素的命名空间(Namespace),URI包括了URL和URN,是二者的超集。,8.5.3网络文件传输的FTP程序设计,2.利用FtpWebRequest类实现文件传送FtpWebRequest类简介在System.Net命名空间下的FtpWebRequest类,是.NETFramework2.0版中新增的类,可以实现文件传输协议(FTP)客户端。FtpWebRequest类实现文件传送的程序设计以下示例是一个实现针对FTP服务器的文件上传与下载功能的应用程序。【示例代码:chpt8-2aFTPUpDownload】,8.5.3网络文件传输的FTP程序设计,【示例代码:chpt8-2aFTPUpDownload】(详细代码见教材)另:安装FTP服务器的基本过程见教材,FtpWebRequest类实现文件传送的窗体设计,8.5.3网络文件传输的FTP程序设计,【示例代码:chpt8-2aFTPUpDownload】程序测试:,针对FTP服务器的文件下载,针对FTP服务器的文件上传,8.5.3网络文件传输的FTP程序设计,3.利用WebClient类实现文件传送在System.Net命名空间下的WebClient类使用WebRequest类提供对资源的访问,提供了向URI标识的资源发送数据和从URI标识的资源接收数据的公共方法。最常用的是DownloadFile方法,它可将具有指定URI的资源下载到本地文件。WebClient类实现文件传送的程序设计以下示例是一个实现针对Web服务器的文件上传与下载功能的应用程序。【示例代码:chpt8-2bINetUpDownload】(详细代码见教材),8.5.3网络文件传输的FTP程序设计,3.利用WebClient类实现文件传送【示例代码:chpt8-2bINetUpDownload】另:安装Web服务器的基本过程见教材,WebClient类实现文件传送的窗体设计,8.5.3网络文件传输的FTP程序设计,【示例代码:chpt8-2bINetUpDownload】程序测试:,针对Web服务器的文件下载,针对Web服务器的文件上传,
展开阅读全文
相关资源
相关搜索

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


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

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


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