Java语言程序设计电子课件 第9章 网络编程案例_第1页
Java语言程序设计电子课件 第9章 网络编程案例_第2页
Java语言程序设计电子课件 第9章 网络编程案例_第3页
Java语言程序设计电子课件 第9章 网络编程案例_第4页
Java语言程序设计电子课件 第9章 网络编程案例_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

JAVA语言程序设计9.1网络连接的3种方式9.2网络编程案例本章小结第九章目录教学目标:在网络为核心的信息时代,计算机网络已经成为人们生活中必不可少的部分。JAVA因为具有与平台无关性、安全性好、网络类库丰富等特性,在网络编程上具有无法比拟的优势。本章将介绍网络模型和不同层次上JAVA网络连接的方式,结合实例介绍各种连接方法的使用。网络是一把双刃剑,使用网络时,要自觉按照社会主义道德的原则和要求,规范自己的行为;要依法律己,遵守“网络文明公约”。教学重点:掌握URL连接方式。掌握Datagram连接方式。掌握Socket连接方式。第九章网络接口层网际层传输层应用层网络接口层网际层传输层应用层网络图12-1TCP/IP体系结构通讯示意图HTTP、……SMTP、FTPTCP或UDPIP1.目前因特网使用的是TCP/IP体系结构9.1网络基础

计算机系统中各个部件之间以何种规则进行通信,就是网络模型。网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型。2.

TCP/IP的协议族提供三个服务层次:①应用层向应用进程提供应用服务,包含HTTP、SMTP、FTP、DNS、TELNET等多种应用层协议。②传输层向应用层提供传输服务,包含TCP和UDP协议。③网际层向传输层提供无连接分组交付服务,包含IP协议。Java提供了网络方面的类定义在包中。Java的网络连接分三种方式:①URL连接方式是三大功能中最上层的方法,它面向http、FTP等服务,很容易确定网络位置,可以直接送出或读入网络上的数据。②Socket连接方式是传统网络程序最常用的方式,它面向有连接的TCP服务。一般情况下客户机服务器模式的软件采用此方法。Socket连接方式是目前非常流行的连接方式,将在9.2节中详细讲解。③Datagram连接方式是更低级的网络传输方式,它面向无连接的UDP服务,将数据目的地地址封装到数据包中,直接向网络发送数据包。系统不能保证一定会将数据送到目的地。9.1网络连接的三种方式1.概念URL

是统一资源定位器(UniformResourceLocator)的简称,表示网络某一资源的地址。URL包括两部分:协议名称和资源名称。例如是一个URL。其中http代表协议,//是资源的名称。URL连接方式包含两个常用类:URL类和URLConnection

类。

9.1.1URL连接方式JAVA中,URL类代表一个统一资源定位符,它指向互联网上的某一资源。URL类有六个构造方法。其中最简单的构造方法格式如下:URL(Stringurl);根据String参数创建URL对象。(1)URL类URL类的常用方法importjava.io.*;import.URL;//引入相关的包publicclassExample12_1{ publicstaticvoidmain(String[]args)throwsIOException { //声明抛出异常 URLurl=newURL("");//连接到搜狐主页 System.out.println("Authority="+url.getAuthority());//获取授权 System.out.println("Defaultport="+url.getDefaultPort());//默认端口 System.out.println("Host="+url.getHost());//获取主机名 System.out.println("Port="+url.getPort());//获取url端口 System.out.println("Protocol="+url.getProtocol());//获取协议 System.out.println("Query="+url.getQuery());//获取查询部分 System.out.println("Ref="+url.getRef());//获取url的引用 System.out.println("UserInfo="+url.getUserInfo());//获取url用户信息 }}【例9-1】建立一个URL对象,调用URL的方法检索该对象的各种属性。该类代表应用程序和URL之间的通信链接。此类用于读取和写入URL引用的资源。构造方法如下:

publicURLConnection(URLurl);实际上,常用url.openConnection()方法得到一个URLConnection类的对象。(2)URLConnection类URLConnection类的常用方法importjava.io.*;import.*;//引入包publicclassExample12_2{ publicstaticvoidmain(Stringargs[]){ Stringreadline;InputStreaminput=null;DataInputStreamdatainput=null;try{URLurl=newURL("");//获取一个URL对象;【例9-2】通过URL定位读取网易首页文件内容,并直接打印出来。 input=url.openStream();//获得输入流;

datainput=newDataInputStream(input);//包裹数据流;

while((readline=datainput.readLine())!=null){//读取文件

System.out.println(readline);//打印文件;

}}catch(Exceptionme){ System.out.println("ErrorURL");}finally{try{datainput.close();}//关闭输入流;

catch(IOExceptione){e.printStackTrace();}}}}通过URL调用openConnection方法创建连接对象。设置参数和一般请求属性。使用connect()方法建立到远程对象的实际连接。远程对象变为可用,远程对象的头字段和内容变为可访问。3URLConnection对象连接模型importjava.io.IOException; import.URL; import.URLConnection;//引入各种包

publicclassExample12_3{ publicstaticvoidmain(String[]args){Stringtype,encoding;longlength,date;

try{

//创建连接对象。

URLurl=newURL("");

【例9-3】使用URLConnection的对象定位到百度网站后读取资源的头信息。URLConnectionconnection=url.openConnection();connection.setDoInput(true);//设置参数和一般请求属性。connection.setDoOutput(true);connection.connect();//建立到远程对象的实际连接。

type=connection.getContentType();encoding=connection.getContentEncoding();length=connection.getContentLength();date=connection.getDate();//访问远程对象的头字段和内容System.out.println(“content-type值=”+type);System.out.println(“content-encoding值=”+encoding);System.out.println(“content-length值=”+length);System.out.println("date值="+date);//打印各种值}catch(IOExceptione){e.printStackTrace();}} }//捕获异常1.概念Datagram连接方式是一种较低级的网络传输方式,面向无连接的UDP服务。UDP提供面向事务的简单、不可靠信息传输服务,适用于需要通信的信息量比较小,而且通信环境可靠性比较好的场合。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。这种方式不能保证数据安全到达目的地。Datagram连接方式的工作原理:发送数据时,先打包,将数据要发送的目的地的地址和端口号打包到每个数据包中,发送到网络;接收数据时,先拆包,得到对方的IP地址和端口号。为了完成数据报通信,JAVA提供了两个常用的类:DatagramSocket

类和DatagramPacket类。9.1.2Datagram连接方式DatagramSocket是用来发送和接收数据报包的套接字。常用的构造方法有以下两个:1.DatagramSocket():绑定到本地主机上任何可用的端口。此构造方法通常使用在客户机上。2.DatagramSocket(intport):创建数据报套接字并将其绑定到本地主机上的指定端口。(1)DatagramSocket类DatagramSocket类的常用方法DatagramPacket类表示数据报包,用于将要发送的信息打包成数据报和接收来自网络的数据报,实现无连接包投递服务。常用构造方法有两种:1.DatagramPacket(byte[]buf,intlength):用来接收长度为length的数据报。2.DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport):将长度为length的包发送到指定主机上的指定端口号。(2)DatagramPacket类DatagramPacket类的常用方法2.Datagram连接方式通信模型服务器------------------------------------------DatagramSocket(端口号)------------------------------------------DatagramSocket.recieve(DatagramPacket)DatagramSocket.send(DatagramPacket)客户端---------------------------------------DatagramSocket()DatagramPacket(地址,端口)---------------------------------------DatagramSocket.send(DatagramPacket)DatagramSocket.recieve(DatagramPacket)使用Datagram连接方式也需要考虑服务器编程和客户端编程。(1)服务器编程的步骤。创建数据报文Socket对象。分配用于收发数据的缓冲区。创建一个DatagramPacket用来接收Socket数据。服务器等待客户的请求包到来。如果服务器接收到来自客户端的数据报报,从它接收到的数据报文中读取客户端的地址和端口。将要发送的数据打包成报文包,从Socket上发送信息。如果停止服务,则关闭Socket。2.Datagram连接方式通信模型建立Socket。分配用于收发数据的缓冲区。向服务器发出请求报文,将数据报发送到指定主机的对应端口号。一个客户机必须事先知道服务器的地址和端口,这个数据报包自身携带客户端的信息。客户机等待应答。接收来自服务器的数据包。关闭Socket。(2)客户端编程的步骤【例9-5】建立一个网络通讯程序,客户机向服务器发出三次呼叫,服务器应答收到。【例9-6】模仿QQ登录,建立一个远程登录过程。使用图形界面,双方打开应用程序后,可以自由通话。服务器指定端口号521提供服务。网络给人们提供了一个获取信息的环境,这个环境推动了社会的发展,给人们的学习和生活带来了巨大的便利。但是,这个环境中有大量的垃圾信息、不健康信息,甚至是危害社会和谐、国家安全的反动信息。正确利用网络,有效利用网络上的规范信息,明辨是非,抵御诱惑,是计算机从业人员所应具备的重要素质。课后思考:明辨是非,抵御诱惑Socket连接方式是JAVA提供的面向连接服务的一种网络连接方式。根据TCP的规则,在传输数据之前必须先建立连接,数据传输结束后,要释放连接。Socket连接方式在服务器和客户端都需要创建实例,双方经过确认连接后才能进行通信。9.1.3Socket连接方式Socket套接字是指进程间通讯连接的端点。Socket模型建立服务器和客户端的连接,使双方通过建立好的连接通道进行通信。1.概念客户机服务器Socket(IP+端口)端口号该端口对应的服务Socket连接方式Socket连接方式实际包含两个类:ServerSocket类和Spcket类。ServerSocket类是服务器套接字,只应用于服务器上。构造方法如下:

publicServerSocket(intport);创建绑定到特定端口port的服务器套接字。(1)ServerSocket类ServerSocket类的常用方法Socket类是客户端套接字,既应用于客户机也应用于服务器上。客户机上,Socket对象由构造方法创建;服务器上,Socket对象由ServerSocket类调用accept()方法进行创建。(2)Socket类常用构造方法:publicSocket(InetAddressaddress,intport)创建一个流套接字并将其连接到指定IP的指定端口。publicSocket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)创建一个套接字并将其连接到远程地址上的端口,通过调用bind()函数来绑定提供的本地地址及端口。(2)Socket类(2)Socket类的常用方法使用Socket连接方式需要考虑服务器编程和客户端编程。2.Socket编程通信模型在服务器端通过创建一个ServerSocket实例,指定一个用来等待的连接的端口号,等待连接。如果监听到来自客户机的连接请求,服务器通过ServerSocket的accept()方法创建Socket实例。创建Socket的输入/输出流,与客户机进行通信。通信结束后关闭流,关闭Socket。(1)服务器端编程的步骤在客户端创建一个socket实例,规定连接服务器的地址和端口号,向服务器发送连接请求。创建Socket的输入输出流,与服务器进行通信。通信结束后关闭流,关闭Socket。(2)客户端编程的步骤【例9-7】建立一个网络通讯程序,客户机向服务器发出呼叫,服务器应答收到。【例9-8】模仿Telnet登录,建立一个远程登录过程。使用DOS环境,当客户端输入命令Telnet,向服务器发送连接请求,服务器要求输入密码,客户端输入密码后,如果正确,提示登录成功,否则提示密码错误。服务器指定端口号1234提供服务。以华为为代表的中国科技公司已经在世界上崭露头角,在某些领域甚至领先世界,在接下来的一段时间,中美两国围绕高科技领域的争夺还会继续。发展5G不仅是通信产业的盛事,甚至在国家层面都受到了前所未有的重视,很大程度上是因为未来的万物互联构想需要5G产业作为基础设施。2G跟随、3G突破、4G同步、5G引领,我国有望在5G时代领先于其他国家。科技的发展和进步只能依靠自己,埋头苦干,注重科技创新,这才是一切进步的源泉。课后思考:中美5G之争,科技进步要自力更生在第八章中,网络聊天工具已经可以将聊天信息存入到本地文件中,在这里通过登录界面连接服务器,建立一个远程登录过程。使用Socket进行网络编程,完成多个客户端通过远程服务器进行连接、交互的过程,本节先只实现多个客户与服务器进行连接。9.2网络编程案例1.设计思路①在服务器上指定服务端口,创建ServerSocket服务,等待客户端连接。②客户端接收命令,判断是Telnet命令后,与服务器连接。③客户端与服务器端进行数据流交互,用户发送用户名和密码,服务器响应是否正确。④如果正确程序进入聊天界面。⑤会话结束,关闭Socket服务。9.2网络编程案例2.遇到问题①如果在一台机器上怎样模仿交互过程?②怎样实现服务器不停的监听,做到有连接请求,立刻响应?③如何实现将登录的命令发送到服务器上?【解决问题1】正常客户端和服务器端两台机器的IP地址不同,在客户端登录时,由Socket指定IP地址即可。如果是在同一台机器上,可以在客户端指定登录的IP是。该地址作为本地软件换回测试主机时使用,这样一台机器就可以作为客户端,同时自身作为服务器使用。使用时需要先开启服务器程序,再开启客户端程序。9.2网络编程案例【解决问题2】服务器从开始工作,就要一直侦听,即使客户端连接后断开后,服务也不能停止。这样在服务器程序上需要无条件的重复工作,直到服务程序关闭位置。因此,采用一个条件永远为真的死循环,不断的重复侦听。while(true){ Sockets=ss.accept();//定义及初始化服务器监听客户端的端口。。。。。。}【解决问题3】在客户端点击登录按钮时,通过Socket连接服务器。通过Socket的输出流,将用户名和密码发送到服务器上,再通过socket的输入流得到服务器端返回的结果。 s=newSocket("",8000); os=s.getOutputStream(); OutputStreamWriterow=newOutputStreamWriter(os); PrintWriterpw=newPrintWriter(ow,

温馨提示

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

评论

0/150

提交评论