资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2010.072010.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(“www.cctv.com“); 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、DNS8.2.3 Socket概述 Socket就是套接字,它是引用网络连接的特殊的文件描述符,由3个基 本要素组成:AddressFamily(网络类型)、SocketType(数据传输 类型)及ProtocolType(采用的网络协议)。 System.Net.Sockets命名空间包含了一个Socket类,该类提供了与低 级Winsock API的接口。 Socket类的构造函数为: Socket (AddressFamily af, SocketType st, ProtocolType pt) 下表列出了可用于IP通信的套接字组合。 SocketTypeSocketTypeProtocolTypeProtocolType说明说明 DgramDgramUdpUdp无无连连接的通信接的通信 StreamStreamTcpTcp面向面向连连接的通信接的通信 RawRawIcmpIcmpInternetInternet控制控制报报文文协议协议 RawRawRawRaw简单简单 IPIP包通信包通信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)分别对新建项目的相应控件,按下表所示的内容进行属性值设置。控件(控件( NameName)属性属性属性新值属性新值groupBogroupBo x1x1TextText服服务务器状器状态态label1label1TextText无客无客户户机机请请求求连连接。接。 button1button1TextText启启动动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)分别对新建项目的相应控件,按下表所示的内容进行属性值设置。 控件(控件( NameName)属性属性属性新值属性新值groupBogroupBo x1x1TextText服服务务器参数器参数label1label1TextTextIPIP地址:地址: label2label2TextText端口:端口: textBox1textBox1TextText127.0.0.1127.0.0.1 textBox2textBox2TextText6553565535 button1button1TextText连连接接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】控件(控件( NameName)属性属性属性新值属性新值groupBox1groupBox1TextText服服务务器参数及状器参数及状态态 label1label1TextTextIPIP: label2label2TextText端口:端口: label3label3NameNamelbServerStatelbServerState TextText状状态态? textBox1textBox1NameNametbIPtbIP TextText127.0.0.1127.0.0.1 textBox2textBox2NameNam
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号