版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第8 8章章 网络编程概述网络编程概述 第第8章章 网络编程概述网络编程概述 8.1 概述概述 8.2 URL编程编程 8.3 Socket编程简介编程简介 实训八实训八 用用Java实现网络通讯实现网络通讯 习题八习题八 第第8 8章章 网络编程概述网络编程概述 8.1 概概 述述 8.1.1 网络技术根底 Internet上的计算机之间采用TCP/IP协议进展通讯,图8.1是TCP/IP协议体系的层次构造。TCP/IP没有对OSI参考模型中的物理层和数据链路层作出规定,只是定义了网络接口,使得TCP/IP协议可以运转在各种硬件设备上。TCP/IP协议的互联网层担任相邻结点之间的数据传送,
2、处置网络的路由选择、流量控制和拥塞控制等问题。第第8 8章章 网络编程概述网络编程概述 图8.1 TCP/IP协议的层次构造ATMX.25FDDI以太网IPTCPUDPTELNETFTPSMTPWWW 网络接口层 互联网层 传输层 应用层第第8 8章章 网络编程概述网络编程概述 运用Java言语编写网络通讯程序通常是在运用层,对某些特殊的运用能够需求直接基于传输层协议编程,普通无需关怀网络通讯的详细细节,特别是互联网层和网络接口层。 传输层提供在源结点和目的结点的两个进程实体之间提供可靠的端到端的数据传输,TCP/IP模型提供了两种传输层协议,即传输控制协议TCP和用户数据报协议UDP。第第8
3、 8章章 网络编程概述网络编程概述 TCP协议是面向衔接的,在传送数据之前必需与目的结点建立衔接,数据传输终了后封锁衔接。而UDP是一种无衔接协议,可直接传输数据,无需事先建立衔接,直接发送带有目的结点信息的数据报。不同的数据报能够经过不同的途径到达目的结点,到达时的顺序与出发时的顺序也能够不同。第第8 8章章 网络编程概述网络编程概述 采用哪种传输层协议是由运用程序的需求决议的,假设可靠性更重要的话,用面向衔接的协议会好一些。比如文件效力器需求保证数据的正确性和有序性,假设一些数据丧失了,系统的有效性将会失去。而有一些效力器是间歇性地发送一些数据块的,假设数据丧失,效力器并不需求再重新发送,
4、由于当数据到达的时候,它能够曾经过时了。确保数据的有序性和正确性需求额外的操作和存储空间,这将会降低系统的呼应速率。第第8 8章章 网络编程概述网络编程概述 传输层的上一层是运用层,运用层包括一切的高层协议。早期的运用层有远程登录协议(Telnet)、文件传输协议(File Transfer Protocol ,FTP)和简单邮件传输协议(Simple MailTransfer Protocol ,SMTP)等。目前运用最广泛的运用层协议是用于从Web效力器读取页面信息的超文本传输协议(Hyper Text Transfer Protocol,)。第第8 8章章 网络编程概述网络编程概述 端口
5、(Port)与IP地址一同为网络通讯的运用程序之间提供一种确切的地址标识,IP地址标识了发送数据的目的计算机,而端口标识了将数据包发送给目的计算机上的哪一个运用程序,如图8.2所示。运用层协议通常采用客户/效力器方式,运用效力器启动后监听特定的端口,客户端需求效力时恳求与效力器该端口建立衔接。一些常用的运用效力都有缺省的端口(称为熟知端口),例如Web效力器缺省的端口号为80。 第第8 8章章 网络编程概述网络编程概述 图8.2 端口与IP地址的标识作用 应 用 程 序 端 口 TCP 或 UDP 应 用 程 序 端 口 应 用 程 序 端 口 IP 地 址 端 口 号 数 据 来 自 网 络
6、 的 数 据 包 第第8 8章章 网络编程概述网络编程概述 8.1.2 网络编程的根本方法 Java言语专门为网络通讯提供了软件包java。采用java包提供的API可以快速方便地开发基于网络的运用。 java包对http协议提供了特别的支持。只需经过URL类对象指明图像、声音资源的位置,无需额外的任务,就可以轻松地从Web效力器上获取图像、声音,或者经过流操作获取HTML文档及文本等资源,并可以对获得的资源进展处置。在本书4.1节的案例中从Web效力器下载广告图片就采用了这种方法,可以看出,运用这种方法下载图像是相当简单的。第第8 8章章 网络编程概述网络编程概述 java包还提供了对TCP
7、、UDP协议套接字(Socket)编程的支持,可以建立用户本人的效力器,实现特定的运用。Socket是一种程序接口,最初由California大学Berkeley分校开发,是用于简化网络通讯的一种工具,是UNIX操作系统的一个组成部分。如今Socket的概念已深化到各种操作环境,包括Java。第第8 8章章 网络编程概述网络编程概述 8.2 URL 编编 程程 8.2.1 URL的概念 URL(Uniform Resource Locator,一致资源定位器)用来标识Internet上的资源,指明获得资源采用的协议和地址,经过URL可以访问Internet上相应的文件和其他资源。 典型的URL
8、格式为 协议名主机名:端口号/资源途径第第8 8章章 网络编程概述网络编程概述 协议名用于指明获取资源所用的传输协议,例如http、ftp、gopher等;主机名指明资源所在的计算机,端口号指明效力器的端口号,对于常用的一些协议(如http、ftp等),假设不指明端口号,那么运用该协议缺省的熟知端口;资源途径指明该资源在效力器上的虚拟途径。例如: java.sun/j2se/1.4.2/download.html http为协议名,java.sun为主机称号,运用缺省的端口80,/ j2se/1.4.2/download.html为效力器上文件的虚拟途径。第第8 8章章 网络编程概述网络编程概
9、述 资源途径还可以包含HTML文件中的参考位置(或称为参考点),例如: scape:80/home/white_paper.html#intro_1 这里,intro_1为white_paper.html中的一个位置。第第8 8章章 网络编程概述网络编程概述 上面定义的URL方式包含访问网络资源的完好途径,通常称为绝对URL。在HTML文档中通常还会运用相对URL。一个相对URL不包括协议或主机信息,用于指定与当前文档处于一样主机的HTML文档。相对URL能够包括相对途径的成员,也能够是URL片断。例如,在java.sun/j2se/1.4.2/download.html文档中相对URL:第第
10、8 8章章 网络编程概述网络编程概述 system-configurations.html 表 示 资 源 j a v a . s u n / j 2 s e / 1 . 4 . 2 / s y s t e m - configurations.html。同样,相对URL: /j2se/1.4.2/system-configurations.html 也表示该资源。第第8 8章章 网络编程概述网络编程概述 8.2.2 URL类 1URL对象的创建 用Java言语访问Web资源是经过URL类来实现的,URL类定义了一个Web资源的一致资源定位器和可以对其进展的一些操作。URL类的对象指向Web资
11、源(如Web页、文本文件、图形图像文件、音频视频文件等等),创建URL对象后可获得URL的各个部分的信息和获取URL内容。 URL类的构造方法有多种方式,下面是常用的几种方式:第第8 8章章 网络编程概述网络编程概述 (1) public URL(String spec) throws MalformedURLException:简单地用一个字符串生成URL对象,如: URL url0=new URL(java.sun/j2se/1.4.2/download.html);第第8 8章章 网络编程概述网络编程概述 (2) public URL(String protocol,String hos
12、t,String file) throws MalformedURLException: 分开指定URL的各个部分,包括协议、主机名、资源途径,采用缺省端口构成URL对象,如: URL url1=new URL(,java.sun ,/j2se/1.4.2/download.html); 第第8 8章章 网络编程概述网络编程概述 (3) public URL(String protocol,String host,int port,String file) throws Malformed URLException:分开指定的URL各个部分构成URL对象,如: URL url2=new URL
13、(, java.sun,80, /j2se/1.4.2/download.html ); (2)、(3)两种构造方法不能构造含有“# 参考点的URL地址。 第第8 8章章 网络编程概述网络编程概述 (4) public URL(URL context,String spec):构造相对URL对象,如: URL base1=new URL( java.sun/j2se/1.4.2/ ); URL url3=new URL( base, download.html);第第8 8章章 网络编程概述网络编程概述 这种方法常用于Java Applet。Applet类提供了方法getDocumentBas
14、e和getCodeBase,分别用于获得当前Applet所在页面的目录途径和Applet所在的目录途径,关于这一点程序4.1中已引见过,本章不再详述。在Applet中可采用类似下面的代码来构造URL对象: URL url1=new URL(getDocumentBase(),file1.txt); URL url2=new URL(getCodeBase(),file2.txt);第第8 8章章 网络编程概述网络编程概述 URL类的构造方法都抛出MalformedURLException异常,生成URL对象时,必需对这一异常进展处置。例如: try URL myURL=new URL(java
15、.sun/); catch (MalformedURLException e) System.out.println(MalformedURLException:+e); 第第8 8章章 网络编程概述网络编程概述 URL对象创建后,不再可以修正该对象所表示的URL地址,但可以经过URL类提供的方法成员来获取其属性,如协议、主机名、端口号、文件名等。常用的方法有: public int getPort():得到URL对象的端口号; public String getProtocol():得到URL对象的协议名;第第8 8章章 网络编程概述网络编程概述 public String getHost(
16、):得到URL对象的主机名; public String getFile():得到URL对象的文件名; public String getRef():得到URL对象的参考点; public boolean equals(Object obj):比较两个URL,不包括参考点。第第8 8章章 网络编程概述网络编程概述 2从网络上获取图像 Java Applet可以运用getImage方法直接从Web效力器获取图像资源,目前支持的图像文件格式为GIF和JPEG两种,第4章的程序4.1就采用了这种方法从效力器下载广告图片。下面再来看一个简单的例子。第第8 8章章 网络编程概述网络编程概述 【程序8.1
17、】 运用相对URL从Web效力器获取图像。import java.applet.*;import java.awt.*;public class downImage extends AppletImage image;public void init()image=getImage(getDocumentBase(),test.gif);第第8 8章章 网络编程概述网络编程概述 public void paint(Graphics g) g.drawImage(image, 0, 0,this); 程序8.1获取并显示了图像test.gif。在该例中,首先用语句 getImage(getDoc
18、umentBase(), test.gif);第第8 8章章 网络编程概述网络编程概述 从HTML文档所在位置下载图像test.gif,并创建一个Image类型的对象image,然后在paint方法中用语句 g.drawImage(image, 0, 0,this); 在屏幕上将图像显示出来。 Applet类提供的getImage方法有两种方式: Image getImage(URL url,String name); Image getImage(URL url)。第第8 8章章 网络编程概述网络编程概述 程序8.1采用了第一种方式,图像资源的完好途径由第一个参数表示的途径目录与第二个字符串
19、参数表示的相对URL构成。第二种方式直接运用完好的URL给出图像资源的途径。采用第二种方式代码段方式通常像下面这样:第第8 8章章 网络编程概述网络编程概述 String url = 图像资源URL;Image image;try image = getImage(new URL(url);catch(Exception e)System.out.println(Cant open the URL );第第8 8章章 网络编程概述网络编程概述 不过,在Java Applet中普通很少采用绝对URL,由于出于平安性的思索,阅读器只允许Java Applet访问与Applet同一主机的资源。假设采
20、用绝对URL,那么当Applet放到其他的Web效力器上运转时,必需修正程序。第第8 8章章 网络编程概述网络编程概述 【程序8.2】 运用绝对URL从Web效力器获取图像。import java.applet.*;import java.*;import java.awt.*;public class getImage extends Applet Image image; public void init() String url = java.sun/images/v4_java_logo.gif;第第8 8章章 网络编程概述网络编程概述 try image = getImage(new
21、 URL(url); catch(Exception e) public void paint(Graphics g) g.drawImage(image, 0, 0,this); 第第8 8章章 网络编程概述网络编程概述 程序8.2采用绝对URL,试图显示java.sun/images/v4_java_logo.gif,除非该Applet被放置在效力器java.sun上,否那么是不能看到正确结果的。在Visual J+下运用WJView.exe调试时,可以在控制台看到如下信息: com.ms.security.SecurityExceptionExHost: cannot access ja
22、va.sun:80 atcom/ms/security/permissions/NetIOPermission.check (NetIOPermission.java)第第8 8章章 网络编程概述网络编程概述 下面还有假设干行,这里省略了。该信息阐明getImage方法无法访问java.sun,引发了平安性异常SecurityExceptionEx。假设运用JDK的appletviewer运转该程序,输出信息有所不同,getImage方法失败,image对象为null,Graphics类的drawImage方法无法正确绘制图像,从而引发异常。第第8 8章章 网络编程概述网络编程概述 getIm
23、age方法在调用后立刻前往,并不等待图像全部载入。因此有时会出现drawImage方法在图像没有载入之前就开场执行了,导致程序刚执行时图像不能正确显示。为处理这个问题,Java提供了MediaTracker类,用于跟踪图像及声音等媒体的载入。 MediaTracker运用方法如下: (1) 构造一个MediaTracker对象; (2) 在下载图像(getImage)之后,运用addImage方法添加需求跟踪的图像; (3) 在显示图像(drawIamge)之前,运用waitForAll方法跟踪图像形状。第第8 8章章 网络编程概述网络编程概述 例如,程序8.1的init方法可改为:publi
24、c void init()tryimage=getImage(getDocumentBase(),test.gif);MediaTracker tracker = new MediaTracker(this);/构造一MediaTracker对象tracker.addImage(image,0);/添加需求跟踪的图片第第8 8章章 网络编程概述网络编程概述 tracker.waitForAll(); catch(Exception e) init方法等待图像载入终了后才前往,以确保paint方法被调用时图像已全部载入。MediaTracker类的构造函数为public MediaTracker
25、(Component comp)即为给定组件创建一个跟踪媒体的MediaTracker对象。第第8 8章章 网络编程概述网络编程概述 下面是MediaTracker类的几种常用方法: public void addImage(Image image, int id):将图像添加到被跟踪的图像组。参数image为需跟踪的图像,参数id为图像组指定标识。 public boolean checkAll():检查一切图像能否下载终了。 public boolean checkAll(boolean load):检查一切图像能否下载终了。参数load假设为true,且图像尚未开场下载,那么立刻开场下载
26、。 第第8 8章章 网络编程概述网络编程概述 public boolean checkID(int id)。 public boolean checkID(int id,boolean load)。 以上两种方法用于检查指定id的图像能否完成下载,参数load的含义同checkAll方法。 public Object getErrorsAny():前往出错的媒体组 。 public Object getErrorsID(int id):前往带有给定标识号的出错的媒体组。 public boolean isErrorAny():检查一切图像的错误形状 。第第8 8章章 网络编程概述网络编程概述
27、public boolean isErrorID(int id):检查一切带有给定标识号的图像的错误形状。 p u b l i c v o i d w a i t F o r A l l ( ) t h r o w s InterruptedException:开场下载一切的图像,直到下载终了后前往。 public boolean waitForAll(long ms) throws InterruptedException:开场下载一切的图像,直到下载终了或参数ms指定的时间(毫秒数)到达后前往。第第8 8章章 网络编程概述网络编程概述 p u b l i c v o i d w a i t
28、 F o r I D ( i n t i d ) t h r o w s InterruptedException。 public boolean waitForID(int id,long ms) throws InterruptedException:等待载入指定标识的图像,参数ms的含义同waitForAll方法。 public int statusAll(boolean load)。 public int statusID(int id,boolean load)。第第8 8章章 网络编程概述网络编程概述 以上两种方法用于前往一切图像或指定id图像的载入形状,形状取值可以为:ABORT
29、ED(下载失败)、COMPLETE (下载胜利)、ERRORED(下载时发生错误)、LOADING(正在下载)。参数load假设为true,那么表示假设图像尚未开场下载,立刻启动下载过程。第第8 8章章 网络编程概述网络编程概述 3从网络上获取声音 与获取图像类似,Java也提供了从Web效力器获取声音资源并播放的方法。Java 2以前的版本只能处置单声道8 kHz的采样频率的AU文件,Java 2添加了对AIFF,WAV以及三种MIDI文件类型的支持。可以利用Applet类的方法play直接播放网络上的声音文件,或运用getAudioClip方法先从网络上获取声音资源,生成AudioClip
30、类型的对象,然后对该对象进展操作。第第8 8章章 网络编程概述网络编程概述 play方法有两种方式: void play(URL url):运用绝对URL表示声音资源的访问途径。 void play(URL url,String name):运用相对URL表示声音资源的访问途径。 第第8 8章章 网络编程概述网络编程概述 类似地,getAudioClip方法也有两种方式: AudioClip getAudioClip(URL url) AudioClip getAudioClip(URL url,String name)程序8.3采用play方法播放与Applet同目录的AU文件。第第8 8章
31、章 网络编程概述网络编程概述 【程序8.3】 声音资源的播放。import java.applet.*;import java.awt.*;import java.*;public class MidiPlay extends Applet public void paint(Graphics g)try 第第8 8章章 网络编程概述网络编程概述 play( getCodeBase(),example.au);catch(Exception e) 第第8 8章章 网络编程概述网络编程概述 AudioClip是Java言语定义的支持声音播放的接口,该接口定义了下面三个笼统方法: void loo
32、p():循环播放该声音资源; void play():开场播放该声音资源; void stop():停顿播放该声音资源。 利用这三个方法可以控制声音的播放,程序8.4是一个简单的例子。 第第8 8章章 网络编程概述网络编程概述 【程序8.4】 用AudioClip接口播放声音资源。import java.awt.*;import java.applet.*;import java.awt.event.*;public class SoundPlay extends Applet implements ActionListener第第8 8章章 网络编程概述网络编程概述 Button playB
33、tn = new Button(播放);Button stopBtn = new Button(停顿);Button loopBtn = new Button(循环);AudioClip au ;public void init()第第8 8章章 网络编程概述网络编程概述 playBtn.addActionListener(this);stopBtn.addActionListener(this);loopBtn.addActionListener(this);add(playBtn);add(stopBtn);add(loopBtn);第第8 8章章 网络编程概述网络编程概述 au = ge
34、tAudioClip(getCodeBase(),example.au);public void actionPerformed(ActionEvent e)Object obj = e.getSource();if(obj=playBtn)au.play();else if(obj=stopBtn)au.stop();第第8 8章章 网络编程概述网络编程概述 elseau.loop(); 程序8.4执行时显示三个按钮,如图8.3所示,点击按钮可以分别调用play、stop、loop方法。第第8 8章章 网络编程概述网络编程概述 图8.3 声音资源的播放第第8 8章章 网络编程概述网络编程概述
35、 4显示网络上的其他HTML文档 对于Web效力器上的HTML文档,Java Applet有两种访问方法:一种是由阅读器翻开该网页,另一种由Applet直接读取HTML文档。这里先引见第一种方法,程序4.1中单击广告图片后,阅读器翻开一个新窗口阅读指定的网页,采用的就是这种方法。 阅读器显示指定网页是利用Applet类的方法getAppletContext来实现的,该方法前往一个AppletContext对象,Java Applet经过该对象访问阅读器。第第8 8章章 网络编程概述网络编程概述 AppletContext的方法showDocument可以显示指定Web效力器的HTML文档,包括
36、Applet所在效力器以及网络上的其他Web效力器。SowDocument方法有两种方式: void ShowDocument(URL url); void ShowDocument(URL url,String target)。第第8 8章章 网络编程概述网络编程概述 第一种方式在当前Applet所在的阅读器窗口(或框架,有关内容请参考HTML规范中有关框架的内容)中翻开指定的网页;第二种方式在指定的阅读器窗口(或框架中)翻开指定的网页。程序8.5演示了ShowDocument方法的运用,程序执行画面如图8.4所示。程序中的窗口名_blank表示一直在新窗口中翻开指定网页。第第8 8章章 网
37、络编程概述网络编程概述 图8.4 程序8.5运转画面 第第8 8章章 网络编程概述网络编程概述 【程序8.5】 用阅读器翻开指定网页。import java.applet.*;import java.awt.*;import java.*;import java.awt.event.*; public class ShowHtml extends Applet implements ActionListener 第第8 8章章 网络编程概述网络编程概述 String theURL;Button javaHome = new Button(java.sun/);Button sunHome =
38、new Button(sun/);Button j2se = new Button(java.sun/j2se);Checkbox newWin = new Checkbox(Open in new window);public void init()GridBagLayout gbl = new GridBagLayout();第第8 8章章 网络编程概述网络编程概述 GridBagConstraints gbc = new GridBagConstraints();setLayout(gbl);gbc.gridwidth=gbc.REMAINDER;gbl.setConstraints(n
39、ewWin,gbc);add(newWin); 第第8 8章章 网络编程概述网络编程概述 gbc.gridwidth=gbc.REMAINDER;gbl.setConstraints(javaHome,gbc);add(javaHome);javaHome.addActionListener(this);gbc.gridwidth=gbc.REMAINDER;gbl.setConstraints(sunHome,gbc);add(sunHome);sunHome.addActionListener(this);第第8 8章章 网络编程概述网络编程概述 gbc.gridwidth=gbc.REM
40、AINDER;gbl.setConstraints(j2se,gbc);add(j2se);j2se.addActionListener(this); public void actionPerformed(ActionEvent e)theURL = e.getActionCommand();第第8 8章章 网络编程概述网络编程概述 URL urlObj = null;try urlObj = new URL(theURL);catch (MalformedURLException ex)System.out.println(Cant open the URL );第第8 8章章 网络编程概
41、述网络编程概述 if (urlObj != null) if(newWin.getState()getAppletContext().showDocument(urlObj,_blank);/阅读器新建一个窗口翻开指定网页第第8 8章章 网络编程概述网络编程概述 else getAppletContext().showDocument(urlObj);/阅读器在当前窗口中翻开指定网页 第第8 8章章 网络编程概述网络编程概述 5读取网络上文件的内容 上面的方法只是显示或播放网络上结点的图像、声音及HTML文档,没有对其内容进展处置。实践上,Java还可读取网络上文件的内容,并对其内容进展处置。
42、 读取网络上文件内容的步骤如下:第第8 8章章 网络编程概述网络编程概述 (1) 创建一个URL类型的对象。例如:String url = java.sun/j2se/1.4.2/download.html;URL fileur;try fileur = new URL(url);catch ( MalformedURLException e) System.out.println(Cant get URL: );第第8 8章章 网络编程概述网络编程概述 (2) 利用URL类的openStream方法获得对应的InputStream类的对象。例如: InputStream filecon =
43、fileur.openStream(); (3) 将InputStream对象转化为DataInputStream类的对象。例如: DataInputStream filedata = new DataInputStream(filecon); (4) 读取内容。例如,对上面的filedata,可用filedata.readLine一行一行读取内容,或用filedata.readchar一个字符一个字符地读取。第第8 8章章 网络编程概述网络编程概述 程序8.6和程序8.7分别演示了Java Applet与Java运用程序读取网络文件的方法,它们的根本步骤一样。但是出于平安性思索,Applet
44、在阅读器中运转时不允许与Applet所在主机外的其他主机建立联络。Java Application无此限制,此外,当阅读器从本地盘翻开调用Java Applet的HTML文档时,也不受此限制。第第8 8章章 网络编程概述网络编程概述 【程序8.6】 下载HTML文件的Java小程序。import java.io.*;import java.*;import java.awt.*;import java.applet.*; public class downHtml extends AppletURL fileur;第第8 8章章 网络编程概述网络编程概述 TextArea showarea =
45、 new TextArea(Please wait a while for gettext,10,30);public void init()try fileur = new URL(getCodeBase(),Page1.htm);catch ( MalformedURLException e) System.out.println(Cant get URL: ); 第第8 8章章 网络编程概述网络编程概述 add(showarea);public void paint(Graphics g)InputStream filecon = null;DataInputStream filedat
46、a = null; String fileline;showarea.setText();try 第第8 8章章 网络编程概述网络编程概述 filecon = fileur.openStream();filedata = new DataInputStream(filecon);while (fileline = filedata.readLine() != null)showarea.append(fileline+n);第第8 8章章 网络编程概述网络编程概述 catch (IOException e) System.out.println(Error in I/O: + e.getMes
47、sage();第第8 8章章 网络编程概述网络编程概述 【程序8.7】 下载HTML文件的Java运用程序。import java.*;import java.io.*; public class downHtmlApppublic static void main (String args)if(args.length!=1)第第8 8章章 网络编程概述网络编程概述 System.out.print(Error!);System.exit(1);URL theUrl;try theUrl = new URL(args0); InputStream filecon = theUrl.openS
48、tream(); String fileline = null;第第8 8章章 网络编程概述网络编程概述 InputStreamReader fr = new InputStreamReader(filecon); BufferedReader br = new BufferedReader(fr); while(fileline = br.readLine()!=null) System.out.println(fileline);第第8 8章章 网络编程概述网络编程概述 catch ( Exception e) System.out.println(e.getMessage() ); 程序
49、8.7从命令行获取要下载网页的URL,运用JDK运转时在命令行中输入URL。 例如: java downHtmlApp java.sun第第8 8章章 网络编程概述网络编程概述 8.2.3 URLConnection类 上面引见了运用URL类翻开输入流获取网络资源的方法,但有时能够还需求向Web效力器发送信息,例如在程序中使POST方法向Web效力器发送一个表单,必需运用URLConnection类。URLConnection类可提供的信息比URL类要多得多,除了可以获取资源数据外,还可以提供资源长度、发送时间、最新更新时间、编码、标题等许多信息。它是一切Java程序和URL之间创建通讯链路的
50、类的笼统超类,可用于衔接由 URL 标识的任何资源。该类的对象既可用于从资源中读,也可用于往资源中写。第第8 8章章 网络编程概述网络编程概述 通常,Java程序无需创建URLConnection类的对象,一旦胜利创建一个URL类的对象,可以经过运用openConnection方法来获得URLConnection类的对象。 运用openConnection不需求参数,操作胜利之后,前往一个URLConnection类的对象。下面的代码段演示了翻开一个到URL衔接的过程:第第8 8章章 网络编程概述网络编程概述 try URL url = new URL(mycompany); URLConne
51、ction connection = url.openConnection();catch (Exception e)System.out.println(e.toString();第第8 8章章 网络编程概述网络编程概述 一旦胜利地建立了一个衔接,就可以获得针对这个衔接的输出流进展写操作,或者获得针对这个衔接的输入流进展读操作。URL可以代表很多不同种类的数据类型所组成的资源,但可以用同样的方式对从URLConnection输入流前往的数据进展操作。下面的程序片断演示了从URL中读取文本数据的方法。 第第8 8章章 网络编程概述网络编程概述 tryURL url = new URL(myco
52、mpany);URLConnection connection = url.openConnection();InputStream inStream = connection.getInputStream();BufferedReader input = new BufferedReader(new InputStreamReader(inStream);第第8 8章章 网络编程概述网络编程概述 String line = ;while (line = input.readLine() != null) System.out.println(line);catch (Exception e)
53、 System.out.println(e.toString();第第8 8章章 网络编程概述网络编程概述 进展写操作同样也很简单,建立一个胜利的衔接之后,首先调用setDoOutput方法将输出(Output)属性设置为真(true),指定该衔接可以进展写操作。下面的程序片断演示了如何把数据写入一个URL。 try URL url = new URL(mycompany); URLConnection connection = url.openConnection(); connection.setDoOutput(true); OutputStream outStream = connec
54、tion.getOutputStream();第第8 8章章 网络编程概述网络编程概述 ObjectOutputStream objectStream = new ObjectOutputStream(outStream);objectStream.writeInt(54367);objectStream.writeObject(Hello there);objectStream.writeObject(new Date();objectStream.flush();catch (Exception e)System.out.println(e.toString();第第8 8章章 网络编程概
55、述网络编程概述 8.2.4 实例 本节最后再来看几个运用URL、URLConnection类的实例。 程序8.8实现了一个Applet,运转画面如图8.5所示,在下拉式列表框中选择搜索引擎名,然后单击“Go按钮,阅读器将显示对应搜索引擎的主页。 第第8 8章章 网络编程概述网络编程概述 图8.5 程序8.8运转画面第第8 8章章 网络编程概述网络编程概述 【程序8.8】 实例一。import java.awt.*;import java.applet.*;import java.awt.event.*;import java.*;import java.URL;import java.Malf
56、ormedURLException;第第8 8章章 网络编程概述网络编程概述 public class ListLink extends Applet implements ActionListener String urlList = cn.yahoo/,google/, sina/;String urlName= 雅虎中文,Google,新浪;Choice urlChoice;第第8 8章章 网络编程概述网络编程概述 public void init()urlChoice = new Choice();Button btn= new Button(Go);for(int i=0;i3;i+
57、)urlChoice.addItem(urlNamei);第第8 8章章 网络编程概述网络编程概述 add(urlChoice);btn.addActionListener(this);add(btn); public void actionPerformed(ActionEvent ev)String label =ev.getActionCommand();if( label.equals(Go)第第8 8章章 网络编程概述网络编程概述 int ch=urlChoice.getSelectedIndex();LinkTo(ch); void LinkTo(int index)try第第8
58、8章章 网络编程概述网络编程概述 URL theURL=new URL(urlListindex);getAppletContext().showDocument(theURL);catch(Exception e)第第8 8章章 网络编程概述网络编程概述 程序8.9的功能与第4章的案例程序4.1类似,不过所显示的广告内容不再固定,而是由adcfg.txt文件确定。该文件与Applet字节码文件存储在一样的位置,Applet初始化时下载该文件,确定显示的广告图片和对应的URL。第第8 8章章 网络编程概述网络编程概述 【程序8.9】 实例二。import java.io.*;import ja
59、va.awt.*;import java.awt.event.*;import java.applet.*;import java.*;第第8 8章章 网络编程概述网络编程概述 class AdCfgApplet applet;String name,imagefile,url;Image image;public AdCfg(String name,String imagefile,String url,Applet applet) = name;this.imagefile = imagefile;第第8 8章章 网络编程概述网络编程概述 this.url = url;t
60、his.applet = applet;image = applet.getImage(applet.getCodeBase(),imagefile);public void Go() tryURL theURL=new URL(url);第第8 8章章 网络编程概述网络编程概述 applet.getAppletContext().showDocument(theURL,newwin);catch(Exception e1)public void Draw()applet.getGraphics().drawImage(image,0,0,applet); 第第8 8章章 网络编程概述网络编程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东外语外贸大学《纳税申报模拟实训》2023-2024学年第一学期期末试卷
- 广东女子职业技术学院《工程制图(Ⅱ)》2023-2024学年第一学期期末试卷
- 广东南华工商职业学院《光纤器件工程》2023-2024学年第一学期期末试卷
- 广东梅州职业技术学院《版面文化与设计》2023-2024学年第一学期期末试卷
- 专题三-信守合同与违约单元基础测试2(新人教版选修5)
- 大学英语过程写作(吉林大学)学习通测试及答案
- 个人理财规划(重庆理工大学)学习通测试及答案
- 【KS5U发布】河南省豫南九校2021届高三上期第二次联考-政治-扫描版含答案
- 2021年高考艺体生文化课百日冲刺-英语专题复习讲练:专题二-代词和介词
- 江西省宜春市2024-2025学年上高二中高一(上)第三次月考物理试卷(含答案)
- 2024年办公楼卫生管理制度模版(3篇)
- 船舶防火与灭火(课件)
- 保险公司2024年工作总结(34篇)
- 七、监理工作重点、难点分析及对策
- 2024年01月22503学前儿童健康教育活动指导期末试题答案
- 面膜中蓝铜肽经皮渗透性和改善皮肤衰老作用研究
- 湖北省荆州市八县市2023-2024学年高一上学期1月期末考试 化学 含解析
- 专题05 说明文阅读(必考题型梳理)50题-2023-2024学年八年级语文下学期期中专题复习(上海专用)(解析版)
- 2024年世界职业院校技能大赛中职组“婴幼儿保育组”赛项考试题库-上(单选题)
- 《水文化概论》全套教学课件
- 期末测评(基础卷二)-2024-2025学年一年级上册数学人教版
评论
0/150
提交评论