《Java程序设计教程》课件第十五章:网络编程.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Java程序设计教程》课件第十五章:网络编程.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计教程 Java 程序设计 教程 课件 第十五 网络 编程
- 资源描述:
-
1、本章学习目标:了解Java 网络相关的API掌握Socket类及其方法的使用掌握ServerSocket类的使用第十五章第十五章 网络编程网络编程第第1 1节节partJava网络API 最初,Java就是作为网络编程语言而出现的,其本身就对网络通信提供了支持,允许使用网络上的各种资源和数据,与服务器建立各种传输通道,实现数据的传输,使网络编程实现起来变得简单。Java中有关网络方面的功能都定义在包中,该包下的URL和URLConnection等类提供了以程序的方式来访问Web服务,而URLDecoder和URLEncoder则提供了普通字符串和application/x-www-form-u
2、rlencode MIME字符串相互转换的静态方法。Java网络API本节概述 Java提供InetAddress类来封装IP地址或域名,InetAddress类有两个子类:Inet4Address类和Inet6Address类,分别用于封装4个字节的IP地址和6个字节的IP地址。InetAddress内部对地址数字进行隐藏,用户不需要了解实现地址的细节,只需了解如何调用相应的方法即可。InetAddress类无构造方法,因此不能直接创建其对象,而是通过该类的静态方法创建一个InetAddress对象或InetAddress数组。InetAddress类常用方法如表15-1所示。表15-1 I
3、netAddress类常用方法15.1.1InetAddress类InetAddress类下述案例示例了InetAddress类的使用,代码如下所示。【代码15.1】InetAddressExample.javapackage com;import java.io.IOException;import .InetAddress;import .UnknownHostException;public class InetAddressExample public static void main(String args)try/获取本机地址信息InetAddress localIp=InetAd
4、dress.getLocalHost();System.out.println(localIp.getCanonicalHostName()=+localIp.getCanonicalHostName();System.out.println(localIp.getHostAddress()=+localIp.getHostAddress();System.out.println(localIp.getHostName()=+localIp.getHostName();System.out.println(localIp.toString()=+localIp.toString();Syste
5、m.out.println(localIp.isReachable(5000)=“+localIp.isReachable(5000);System.out.println(-);InetAddress类15.1.1/获取指定域名地址信息InetAddress baiduIp=InetAddress.getByName();System.out.println(baiduIp.getCanonicalHostName()=+baiduIp.getCanonicalHostName();System.out.println(baiduIp.getHostAddress()=+baiduIp.ge
6、tHostAddress();System.out.println(baiduIp.getHostName()=+baiduIp.getHostName();System.out.println(baiduIp.toString()=+baiduIp.toString();System.out.println(baiduIp.isReachable(5000)=+baiduIp.isReachable(5000);System.out.println(-);/获取指定原始IP地址信息InetAddress ip=InetAddress.getByAddress(new byte 127,0,0
7、,1);/InetAddress ip=InetAddress.getByName(127.0.0.1);System.out.println(ip.getCanonicalHostName()=“+ip.getCanonicalHostName();System.out.println(ip.getHostAddress()=“+ip.getHostAddress();System.out.println(ip.getHostName()=“+ip.getHostName();System.out.println(ip.toString()=+ip.toString();InetAddres
8、s类15.1.1System.out.println(ip.isReachable(5000)=“+ip.isReachable(5000);catch(UnknownHostException e)e.printStackTrace();catch(Exception e)e.printStackTrace();InetAddress类 上述代码分别获取本机、指定域名以及指定IP地址的InetAddress对象。其中,调用getLocalHost()可以获取本机InetAddress对象;调用getByName()可以获取指定域名的InetAddress对象;调用getByAddress()
9、可以获取指定IP地址的InetAddress对象,该方法的参数使用字节数组存放IP地址。也可以直接通过getByName()获取指定IP地址的InetAddress对象,此时,IP地址作为字符串即可。15.1.1程序运行结果如下所示:localIp.getCanonicalHostName()=192.168.0.101localIp.getHostAddress()=192.168.0.101localIp.getHostName()=shouchao-PClocalIp.toString()=shouchao-PC/192.168.0.101localIp.isReachable(5000
10、)=true-baiduIp.getCanonicalHostName()=180.97.33.108baiduIp.getHostAddress()=180.97.33.108baiduIp.getHostName()=baiduIp.toString()= 需要注意的是:在获得Internet上的域名所对应的地址信息时,需保证运行环境能访问Internet,否则将抛出UnknownHostException异常。15.1.1 URL(Uniform Resource Locator,统一资源定位器)表示互联网上某一资源的地址。资源可以是简单的文件或目录,也可以是对更为复杂对象的引用,例如对
11、数据库或搜索引擎的查询。URL是最为直观的一种网络定位方法,符合人们的语言习惯,且容易记忆。在通常情况下,URL可以由协议名、主机、端口和资源四个部分组成,其语法格式如下所示:protocol:/host:port/resourceName 其中:protocol是协议名,指明获取资源所使用的传输协议,例如http、ftp等,并使用冒号“:”与其他部分进行隔离;host是主机名,指定获取资源的域名,此部分由左边的双斜线“/”和右边的单斜线“/”或可选冒号“:”限制;port是端口,指定服务的端口号,是一个可选参数,由主机名左边的冒号“:”和右边的斜线“/”限制;resourceName是资源名
12、,指定访问的文件名或目录。例如:URL地址 http:/127.0.0.1:8080/student/index.jsp15.1.2U R L 类URL类 为了方便处理,Java将URL封装成URL类,通过URL对象记录下完整的URL信息。URL类常用方法及功能如表15-2所示。15.1.2U R L 类下述案例示例了根据指定的路径构造URL对象,并获取当前URL对象的相关属性。代码如下所示。【代码15.2】URLExample.javapackage com;import .MalformedURLException;import .URL;public class URLExample p
13、ublic static void main(String args)try URL mybook=new URL(http:/127.0.0.1:8080/student/index.jsp);System.out.println(协议protocol=+mybook.getProtocol();System.out.println(主机host=+mybook.getHost();System.out.println(端口port=+mybook.getPort();System.out.println(文件filename=+mybook.getFile();System.out.pri
14、ntln(锚ref=+mybook.getRef();System.out.println(查询信息query=+mybook.getQuery();System.out.println(路径path=+mybook.getPath();catch(MalformedURLException e)e.printStackTrace();程序运行结果如下所示:协议protocol=http主机host=127.0.0.1:8080端口port=-1文件filename=/student/index.jsp锚ref=null查询信息query=null路径path=/student/index.j
15、sp15.1.2U R L 类 URLConnection代表与URL指定的数据源的动态连接,该类提供一些比URL类更强大的服务器交互控制的方法,允许使用POST或PUT和其他HTTP请求方法将数据送回服务器。URLConnection是一个抽象类,其常用方法如表15-3所示。15.1.3URLConnection类URLConnection类下述案例示例了使用URLConnection类读取网络资源信息并打印,代码如下所示。【代码15.3】URLConnectionExample.javapackage com;import java.io.BufferedReader;import jav
16、a.io.IOException;import java.io.InputStreamReader;import .MalformedURLException;import .URL;import .URLConnection;public class URLConnectionExample public static void main(String args)try/构建一URL对象URL mybook=new URL(https:/ urlConn=mybook.openConnection();/设置请求属性,字符集是UTF-8urlConn.setRequestProperty(C
17、harset,GBK);/由URLConnection获取输入流,并构造BufferedReader对象BufferedReader br=new BufferedReader(new InputStreamReader(urlConn.getInputStream();15.1.3URLConnection类String inputLine;/循环读取并打印数据while(inputLine=br.readLine()!=null)System.out.println(inputLine);/关闭输入流br.close();catch(MalformedURLException e)e.pr
18、intStackTrace();catch(IOException e)e.printStackTrace();上述代码的运行结果是输出指定网页页面的源代码,此处不显示输出效果,读者可以自己调试程序查看。15.1.3URLConnection类 当URL地址中包含非西欧字符时,系统会将这些非西欧字符转换成特殊编码(如“%XX”格式),此种编码称为application/x-www-form-urlencoded MIME。在编程过程中如果涉及到普通字符串和application/x-www-form-urlencoded MIME字符串之间相互转换时,就需要使用URLDecoder和URLEn
19、coder两个工具类。URLDecoder工具类提供了一个decode(String s,String enc)静态方法,该方法将application/x-www-form-urlencoded MIME字符串转换成普通字符串;URLEncoder工具类提供了一个encode(String s,String enc)静态方法,该方法与decode()方法正好相反,能够将普通的字符串转换成application/x-www-form-urlencoded MIME字符串。15.1.4URLDecoder和URLEncoder类URLDecoder和URLEcoder类下述案例示例了URLDec
20、oder和URLEncoder两个工具类的使用,代码如下所示。【代码15.4】URLDecoderExample.javapackage com;import java.io.UnsupportedEncodingException;import .URLDecoder;import .URLEncoder;public class URLDecoderExample public static void main(String args)try/将普通字符串转换成application/x-www-form-urlencoded字符串String urlStr=URLEncoder.enco
21、de(面向对象程序设计Java,GBK);System.out.println(urlStr);/将application/x-www-form-urlencoded字符串 转换成普通字符串String keyWord=URLDecoder.decode(%C3%E6%CF%F2%B6%D4%CF%F3%B3%CC%D0%F2%C9%E8%BC%C6Java,GBK);System.out.println(keyWord);catch(UnsupportedEncodingException e)e.printStackTrace();程序运行结果如下:%C3%E6%CF%F2%B6%D4%C
22、F%F3%B3%CC%D0%F2%C9%E8%BC%C6Java面向对象程序设计Java15.1.4URLDecoder和URLEncoder类第第2 2节节part基于TCP的网路编程 TCP/IP通信协议是一种可靠的、双向的、持续的、点对点的网络协议。使用TCP/IP协议进行通信时,会在通信的两端各建立一个Socket(套接字),从而在通信的两端之间形成网络虚拟链路,其通信原理如图15.1所示。基于TCP的网路编程本节概述 Java对基于TCP的网络通信提供了封装,使用Socket对象封装了两端的通信端口。Socket对象屏蔽了网络的底层细节,例如媒体类型、信息包的大小、网络地址、信息的重
23、发等。Socket允许应用程序将网络连接当成一个IO流,既可以向流中写数据,也可以从流中读取数据。一个Socket对象可以用来建立Java的IO系统到Internet上的任何机器(包括本机)的程序连接。包中提供了网络编程所需的类,其中基于TCP协议的网络编程主要使用下面两种Socket:ServerSocket:是服务器套接字,用于监听并接收来自客户端的Socket连接;Socket:是客户端套接字,用于实现两台计算机之间的通信。基于TCP的网路编程15.2.1Socket类 使用Socket套接字可以较为方便地在网络上传递数据,从而实现两台计算机之间的通信。通常客户端使用Socket来连接指
24、定的服务器,Socket的两个常用构造方法如下:Socket(InetAddress|String host,int port):创建连接到指定远程主机和端口号的Socket对象,该构造方法没有指定本地地址和本地端口号,默认使用本地主机IP地址和系统动态分配的端口;Socket(InetAddress|String host,int port,InetAddress localAddr,int localPort):创建连接到指定远程主机和端口号的Socket对象,并指定本地IP地址和本地端口号,适用于本地主机有多个IP地址的情况。需要注意的是:上述两个Socket构造方法都声明抛出IOExc
25、eption异常,因此在创建Socket对象必须捕获或抛出异常。端口号建议采用注册端口(范围是102449151之间的数),通常应用程序使用该范围内的端口,以防止发生冲突。Socket类 例如:创建Socket对象 try Socket s=new Socket(192.168.1.128,9999);./Socket通信 catch(IOException e)e.printStackTrace();除了构造方法,Socket类常用的其他方法如表15-4所示。15.2.1Socket类 通常使用Socket进行网络通信的具体步骤如下:根据指定IP地址和端口号创建一个Socket对象;调用ge
展开阅读全文