项目8 网络编程基础_第1页
项目8 网络编程基础_第2页
项目8 网络编程基础_第3页
项目8 网络编程基础_第4页
项目8 网络编程基础_第5页
已阅读5页,还剩32页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络编程基础项目八高等院校公共课系列精品教材Java开发综合实战理论联系实际,培养举一反三、触类旁通的学习能力。追根溯源,从基础着手,培养科学严谨的思维方式。思政目标能够实现简单的TCP网络通信能够实现简单的UDP网络通信技能目标将物理位置不同、且具有独立功能的多台计算机连接在一起就形成了网络。网络可以使不同物理位置上的计算机进行资源共享和通信。Java提供了专门的网络开发程序包,包含网络程序所需要的不同的类。用户只要创建这些类的对象,调用相应的方法,即使不具备有关的网络知识,也可以编写出网络通信程序。项目导读任务1网络程序设计基础任务2实现TCP网络程序任务3实现UDP网络程序知识梳理网络程序设计基础任务1任务1网络程序设计基础任务引入通过前面几个项目的学习,小白已逐步完成了一个简易的单机版进销存管理系统。考虑到应用程序的实用性,小白想将单机版的管理系统扩展为网络版程序。在此之前,他有必要先了解网络应用程序常用的设计模式、常用的网络协议,以及IP地址和端口的概念。知识准备一、网络应用程序设计模式在网络通信过程中往往会分为两种端点:服务端与客户端,围绕这两种端点产生了网络程序开发的两种模式C/S模式和B/S模式。在开发过程中,应根据实际需求,并结合各种模式的特点选择应用程序设计模式。1.C/S(Client/Server,客户端/服务端)模式这种模式将网络事务处理分为客户端和服务器端两个部分。客户端用于为用户提供操作,同时向网络提供请求服务的接口;服务端负责接收并处理客户端发出的服务请求,并将服务处理结果返回给客户端。2.B/S(Browser/Server,浏览器/服务器)模式这种模式是伴随着Internet技术的兴起,对C/S模式的改进,仅使用HTTP进行通信,主要事务逻辑在服务器端实现,无须安装客户端,Web浏览器即客户端,因此只需针对服务器端开发一套程序。任务1网络程序设计基础二、常用的网络协议从应用的角度出发,网络协议可理解为网络通信规则,是网络中的各台主机传输数据进行通信的规则说明,规定了计算机之间连接的特征、相互寻址规则、数据发送冲突的解决方式、数据传送与接收的方式等内容。网络通信协议有很多,目前应用最广泛的是TCP/IP、UDP、ICMP和其他一些协议的协议族。本节简单地介绍本项目的网络编程主要涉及的TCP、UDP和IP。1.TCP协议TCP(TransmissionControlProtocol,传输控制协议)提供两台计算机之间可靠的数据传送。2.UDP协议UDP(UserDatagramProtocol,用户数据报协议)是无连接通信协议,以独立发送数据报的方式向若干个目标发送数据,或接收来自若干个源的数据,不保证数据的可靠传输。任务1网络程序设计基础3.TCP/IP协议TCP/IP(TransmissionControlProtocol/InternetProtocol传输控制协议/网际协议)是Internet最基本的通信协议,在全球范围内实现了不同硬件结构、不同操作系统、不同网络系统之间的互联。TCP/IP协议共分为4层,分别为应用层、传输层、网络层和数据链路层。各层实现特定的功能,提供特定的服务和访问接口,并具有相对的独立性,如图所示。任务1网络程序设计基础TCP/IP层次结构三、IP地址和端口Internet上的主机有两种方式表示地址:域名和IP地址。域名容易记忆,在连接网络时输入一个主机的域名(例如)后,域名服务器(DNS)负责将域名转化成IP地址,这样才能和主机建立连接。在TCP/IP中,IP地址用于唯一地标识一台接收或发送数据的计算机。目前,广泛使用的IP地址版本是IPv4,用4个字节的二进制数表示。为便于记忆和处理,通常将IP地址写成十进制的形式,每个字节用一个十进制数字(0~255)表示,数字之间用符号“.”分开,如,该地址表示本机IP地址,通常用于测试本机TCP/IP是否正常。任务1网络程序设计基础Java在包中提供了与IP地址相关的类InetAddress类,利用该类提供的方法可以获取IP地址、主机地址等信息,如表所示。任务1网络程序设计基础提示:使用上述方法时,如果主机不存在或网络连接错误,会抛出UnknownHostException异常,因此必须进行异常处理。实现TCP网络程序任务2任务引入了解了网络应用程序设计的基本模式和概念后,小白决定先学习TCP网络程序的原理和实现方法。知识准备在Java中,TCP网络程序设计是指利用Socket类编写通信程序,使用此类可以方便地建立可靠的、双向的、持续的、点对点的通信连接。利用TCP协议进行通信的两个应用程序是有主次之分的,一个称为服务器端程序,另一个称为客户端程序,两者的功能和编写方法大不一样。通信时,首先要创建代表服务器端的ServerSocket对象,开启一个服务,此服务会等待客户端的连接请求;然后创建代表客户端的Socket对象,向服务器端发出连接请求,服务器端响应请求后,两者才建立连接,通过套接字的I/O流开始通信。通信完毕后,使用套接字的close()方法关闭连接。任务2实现TCP网络程序一、实现服务器端程序ServerSocket类的实例对象用于实现一个服务器端程序,在指定的端口等待接收客户端在该端口发送的TCP连接请求。ServerSocket类的构造方法有以下几种形式,通常会抛出IOException异常。(1)ServerSocket()创建没有绑定端口的服务器套接字。(2)ServerSocket(intport)创建绑定到特定端口的服务器套接字。(3)ServerSocket(intport,intbacklog)创建绑定到特定端口的服务器套接字,并指定在服务器忙时可以与之保持连接请求的等待客户数量backlog。任务2实现TCP网络程序(4)ServerSocket(intport,intbacklog,InetAddressbindAddress)使用指定的端口、侦听backlog和要绑定到的IP地址创建服务器套接字。任务2实现TCP网络程序提示:如果没有客户端请求,accept()方法没有发生阻塞,肯定是程序出现了问题。通常是使用了一个被其他程序占用的端口号,ServerSocket绑定没有成功。ServerSocket对象可以调用setSoTimeout(inttimeout)方法设置单位为毫秒的超时值,一旦ServerSocket对象调用accept()方法阻塞的时间超过timeout,将触发SocketTimeoutException。任务2实现TCP网络程序二、实现客户端程序Socket类用于实现TCP客户端程序。客户端负责创建连接到服务器的套接字对象,发出连接请求,并与服务器通信。Socket类的构造方法有以下几种形式,通常会抛出IOException异常。(1)Socket()创建没有连接任何服务器的客户端套接字对象。(2)Socket(Stringhost,intport)创建连接到运行在指定地址和端口上的服务器程序的Socket对象。(3)Socket(InetAdressaddress,intport)这种方法与第二种方法类似,创建连接到运行在指定地址和端口上的服务器程序的Socket对象。任务2实现TCP网络程序任务2实现TCP网络程序三、数据交互通信客户端创建一个Socket对象向指定的主机和端口发送请求,服务器端的ServerSocket对象监听客户端在该端口发送的TCP请求。接收到TCP连接请求后,服务器端的ServerSocket对象调用accept()方法获取客户端连接,并创建一个驻留在服务器端的Socket实例。客户端Socket与服务器端Socket连接成功后,通过I/O流交互数据,通过输出流发送数据,通过输入流接收数据,从而实现通信,如图所示。任务2实现TCP网络程序注意:从Socket连接中读取数据与从文件中读取数据有着很大的不同。从文件中读取数据时,所有的数据都已经存在文件中。而使用Socket连接时,可能在另一端数据发送之前,就已经开始读取了,这时,就会阻塞本线程,直到该读取方法成功读取到信息,本线程才继续执行后续的操作。任务2实现TCP网络程序案例——模拟问答式交互本案例利用Socket完成一个TCP程序,模拟问答式交互。任务2实现TCP网络程序

服务器端运行效果

客户端运行效果实现UDP网络程序任务3000000掌握了TCP网络程序的实现方法,小白想知道常见的UDP程序与TCP程序有哪些异同,以及实现UDP程序的方法。知识准备UDP程序也分为服务器端和客户端两部分。与TCP必须建立可靠连接,提供端到端的服务不同,UDP是一种面向无连接的协议,UDP服务器为所有通信使用同一套接字,因此,在通信时发送端和接收端不用建立连接,发送的消息对方不一定能接收到,是相对不可靠的传输控制协议。基于UDP通信的基本模式为:将数据打包发送→接收数据报。客户端和服务器端都使用DatagramPacket对象封装需要发送或者接收的数据,通过DatagramSocket对象的send()方法和receive()方法发送和接收数据。通信完成后,客户端调用DatagramSocket实例的close()方法关闭该套接字。任务3实现UDP网络程序一、发送数据报UDP通信中,发送数据报的步骤如下:(1)使用DatagramSocket类的构造方法创建一个数据报套接字。(2)使用DatagramPacket类的构造方法将要发送的数据封装成数据报。(3)使用DatagramSocket对象的send()方法发送数据报。1.创建数据报套接字Java在包中提供DatagramSocket类用于表示发送或接收数据报的套接字。2.创建数据报Java使用DatagramPacket对象表示数据报,封装UDP通信中发送或接收的数据。任务3实现UDP网络程序DatagramPacket类还提供了一些用于获取数据报的内容信息的方法,如表所示。3.发送数据报创建数据报后,使用DatagramSocket对象的send(DatagramPakcetdp)方法,即可发送指定的数据报dp,该数据报中不仅包含要发送的数据,还包含数据的长度、目标主机的IP地址和端口号。任务3实现UDP网络程序二、接收数据报UDP通信中,接收数据报的步骤如下:(1)使用DatagramSocket类的构造方法创建一个数据报套接字,绑定到指定的端口。(2)使用DatagramPacket类的构造方法创建数据报封装接收到的数据。(3)使用DatagramSocket对象的receive()方法接收数据报。1.创建数据报套接字创建接收端的数据报套接字可以采用以下两种构造方法:DatagramSocket(intport):创建DatagramSocket对象,并将其绑定到本地主机指定的端口上。DatagramSocket(intport,InetAddressaddress):创建DatagramSocket对象,并将其绑定到指定的本地地址上。任务3实现UDP网络程序2.创建接收信息的数据报在创建用于封装待接收的数据的DatagramPacket实例时,不需要指定数据来源的远程主机和端口,只需指定一个缓存数据的byte数组即可。3.接收数据报使用DatagramSocket对象的receive(DatagramPakcetdp)方法,即可将接收到的数据填充到指定的数据报dp中。任务3实现UDP网络程序案例——简易聊天程序本案例用本地主机的不同端口模拟两台主机互相发送和接收数据报,利用UDP和多线程技术制作一个简易的聊天程序。任务3实现UDP网络程序

主机A发送消息主机B输入消息任务3实现UDP网络程序主机A接收到消息主机A输入消息

主机B接收到消息项目总结在上一章的项目实战中已实现了一个简单的单机版进销存管理系统。本章将分离客户端和服务器端,利用TCPSocket制作一个简易的网络版进销存管理系统。(1)复制并粘贴“进销存管理系统V7.0”,在CopyProject对话框中修改项目名称为“进销存管理系统V8.0”,然后单击Copy按钮关闭对话框。首先设计客户端程序。(2)在项目中添加一个名为net的包,在包中添加一个名为Client的类,用于实现客户端主机,并与服务器通信。(3)在项目中新建一个名为util的包,在包中添加一个名为Protocol的类,用于定义通信协议。项目实战(4)在util包中添加一个名为Parser的类,用于解析服务器端返回的结果信息(5)在model包中定义一个实体类,用于封装通信的结果信息。(6)修改Controllers.java,处理客户端向服务器端发送请求的操作。(7)在net包中添加一个名为Server的类,用于实现服务器,并接收

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论