Java网络程序设计 课件 单元9-03Java与网络_第1页
Java网络程序设计 课件 单元9-03Java与网络_第2页
Java网络程序设计 课件 单元9-03Java与网络_第3页
Java网络程序设计 课件 单元9-03Java与网络_第4页
Java网络程序设计 课件 单元9-03Java与网络_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

Java与网络单元九IP地址类URL类URLConnection类目录CONTENTS1239.3.1IP地址类

在TCP/IP协议族中,我们是通过IP地址来标识网络上的一台主机(含网络设备)的。如果想获取自己主机的IP地址,可以通过打开“Internet协议版本4(TCP/IPv4)属性”对话框方式查看(必须是设置固定IP地址,而不是自动获取IP地址),还可以通过ipconfig命令查看。假设需要在程序中获取本机的IP地址,该如何编写代码呢?9.3.1IP地址类

通过查阅JDKAPI文档获悉,在Java中,使用包下的InetAddress类表示互联网协议的IP地址。下面的案例演示了如果获得本地主机的IP地址,具体代码如下:import.*;publicclassTestGetIP{publicstaticvoidmain(Stringargs[]){InetAddressmylP=null;try{//通过InetAddress类的静态方法,返回本地主机对象myIP=InetAddress.getLocalHost();}catch(Exceptione){e.printStackTrace();}//通过InetAddress类的getHostAddress()方法获得IP地址字符串System.out.println(myIP.getHostAddress());}}9.3.1IP地址类

编译、运行程序,显示出本地主机的IP地址。如果我们不仅想获得本地主机的IP地址,还想根据用户输入的域名,获取这个域名在互联网上的IP地址,下面的代码演示了此功能:importjava.util.Scanner;import*;publicclassTestGetIP2{publicstaticvoidmain(Stringargs[]){InetAddresssohuIP=null;Scannerinput=newScanner(System.in);System.out.print("请输入要查询IP地址的域名:");StringdName=input.next();try{//通过InetAddress类的静态方法,返回指定域名的IP地址对象sohuIP=InetAddress.getByName(dName);}catch(Exceptione){e.printStackTrace();}System.out.println("域名:"+dName+"对应的IP地址为:"+sohuIP.getHostAddress());}}9.3.1IP地址类

编译、运行程序,其结果如图9.4所示。图9.4获取指定域名的IP地址9.3.1IP地址类

上面的两个例子中,创建的InetAddress类对象都不是使用构造方法new出这个对象,而是通过InetAddress类的静态方法获取的。下面列出了通过InetAddress类的静态方法获取InetAddress类对象的方法:

●InetAddress[]getAllByName(Stringhost)

在给定主机名的情况下,根据系统上配置的名称服务返回其IP地址所组成的数组。

●InetAddressgetByAddress(byte[]addr)

在给定原始IP地址的情况下,返回InetAddress对象。

●InetAddressgetByAddress(Stringhost,byte[]addr)

根据提供的主机名和IP地址,创建InetAddress对象。

●InetAddressgetByName(Stringhost)

在给定主机名的情况下,返回InetAddress对象。

●InetAddressgetLocalHost()

返回本地主机InetAddress对象。9.3.1IP地址类

InetAddress类的其他常用方法有:

●byte[]getAddress()

返回此InetAddress对象的原始IP地址。

●StringgetCanonicalHostName()

返回此IP地址的完全限定域名。完全限定域名是指主机名加上全路径,全路径中列出了序

列中所有域成员。

●StringgetHostAddress()

返回IP地址字符串。

●StringgetHostName()

返回此IP地址的主机名。9.3.2URL类

Java提供的网络功能的相关类主要有三个,它们分别是URL、Socket和Datagram,其中URL是这三个类中层次级别最高或者说封装最多的类,通过URL类可以直接发送或读取网络上的数据。 URL类代表一个统一资源定位符,它是指向互联网资源的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

通常,URL可分成几个部分。例如/view/29.htm,指示使用的协议为HTTP(超文本传输协议),并且该信息驻留在一台名为的主机上,主机上的信息名称为/view/29.htm。 URL可选择指定一个端口号,用于建立到远程主机TCP连接的端口号,例如:8080/examples/index.html。如果未指定该端口号,则使用协议默认的端口,HTTP协议的默认端口为80。9.3.2URL类

URL后面可能还跟有一个片段,也称为引用。该片段由井字符“#”指示,后面跟有更多的字符。例如/index.html#chapterl。使用此片段的目的在于表明,在获取到指定的资源后,应用程序需要使用文档中附加有chapter1标记的部分。ApacheTomcatExamples图9.5网络上指定资源页面9.3.2URL类

下面通过一个案例,演示如何获取网络上指定资源(:8080/examples/index.html)的信息。这个页面的具体内容如图7.5所示,其HTML代码如下所示:<!D0CTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD><TITLE>ApacheTomcatExamples</TITLE><METAhttp-equiv=Content-Typecontent="text/html"></HEAD><B0DY><P><H3>ApacheTomcatExamples</H3><P></P><ul><li><ahref="servlets">Servletsexamples</a></li><li><ahref="jsp">JSPExamples</a></li></ul></B0DY></HTML>9.3.2URL类这个案例的具体需求为先输入要定位的URL地址,然后再输入要显示哪个页面标签元素的内容,程序显示该标签的具体内容,具体代码如下://通过URL字符串创建URL对象tURL=newURL(url);in=newBufferedReader(newInputStreamReader(tURL.openStream()));Strings;while((s=in.readLine())!=null){if(s.contains(iStr))System.out.println(s);}}catch(Exceptione){e.printStackTrace();}}}importjava.util.Scanner;import.*;importjava.io.*;publicclassTestURL{publicstaticvoidmain(Stringargs[]){URLtURL=null;BufferedReaderin=null;Scannerinput=newScanner(System.in);System.out.print("请输入要定位的URL地址:");Stringurl=input.next();System.out.print("请输入要显示哪个页面标签元素的内容:");StringiStr=input.next();try{9.3.2URL类

编译、运行程序,先后输入:8080/examples/index.html和TITLE,其运行结果如图9.6所示。图9.6URL类使用9.3.3URLConnection类

前面介绍的URL类代表的是一个网络资源的位置,而接下来要介绍的URLConnection代表的是一种连接。此类的实例可用于读取和写入对应URL引用的资源。通常,创建一个到URL的连接URLConnection的对象需要以下几个步骤:(1)通过在URL上调用openConnection()方法创建连接对象。(2)设置参数和一般请求属性。(3)使用connect()方法建立到远程对象的实际连接。(4)远程对象变为可用,其中远程对象的头字段和内容变为可访问。9.3.3URLConnection类

URLConnection类有下列属性作为参数可以设置: booleandolnput:将doInput标志设置为true,指示应用程序要从URL连接读取数据,此属性的默认值为true。此属性由setDoInput()方法设置,其值由getDoInput()方法返回。 booleandoOutput:将doOutput标志设置为true,指示应用程序要将数据写入URL连接,此属性的默认值为false。此属性由setDoOutput()方法设置,其值由getDoOutput()方法返回。 longifModifiedSince:有些网络协议支持跳过对象获取,除非该对象在某个特定时间点之后又进行了修改。其值表示距离格林威治标准时间1970年1月1日的毫秒数,只有在该时间之后又进行了修改时,才获取该对象。此属性的默认值为0,表示必须一直进行获取。此属性由setlfModifiedSince()方法设置,其值由getIfModifiedSince()方法返回。9.3.3URLConnection类

booleanuseCaches:如果其值为true,则只要有条件就允许协议使用缓存;如果其值为false,则该协议始终必须获得此对象的新副本,其默认值为上一次调用setDefaultUseCaches()方法时给定的值。此属性由setUseCaches()方法设置,其值由getUseCaches()方法返回。 booleanallowUserlnteraction:如果其值为true,则在允许用户交互(例如弹出一个验证对话框)的上下文中对此URL进行检查;如果其值为false,则不允许有任何用户交互,其默认值为上一次调用setDefaultAllowUserlnteraction()方法所用的参数的值。使用setAllowUserlnteraction()方法可对此属性的值进行设置,其值由getAllowUserlnteraction()方法返回。 URLConnection类还有两个属性connected和url,分别表不是否创建到指定URL的通信链接和该URLConnection类在互联网上打开的远程对象。

另外,可以使用setRequestProperty(Stringkey,Stringvalue)方法设置一般请求属性,如果已存在具有该关键字的属性,则用新值改写原值。9.3.2URL类

下面通过一个案例,简要说明URLConnection类的使用。URLConnection类里涉及的一些知识我们现在还没有学习到,在阅读下面的代码时如果有不明白的地方,通过后面的课程学习会逐步理解。hUrlC.setDoInput(true);//请求如果是POST,不能使用缓存hUrlC.setUseCaches(false);//设置Content-Type属性hUrlC.setRequestProperty("ContentType","text/plain;charset=utf-8");//设定请求的方法为POST,默认是GEThUrlC.setRequestMethod("POST");//(3)使用connect方法建立到远程对象的实际连接hUrlC.connect();//(4)远程对象变为可用//通过HttpURLConnecticm获取输出输入流,可根据需求进一步操作OutputStrea

温馨提示

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

评论

0/150

提交评论