Transcript Document

第11章









11.1
11.2
11.3
11.4
11.5
11.6
11.7
11.8
11.9
Java网络的基本知识
使用URL
读取URL中的资源
显示URL资源中的html文件
处理超链接
InetAdress类
套接字
网络中的数据压缩与传输
UDP数 据 报
广播数据报
11.1 使用URL
URL类是对统一资源定位符(Uniform
Resource Locator)的抽象,使用URL创建
对象的应用程序称作客户端程序,一个
URL对象存放着一个具体的资源的引用,
表明客户要访问这个URL中的资源,利用
URL对象可以获取URL中的资源 .
 URL对象通常包含最基本的三部分信息:
协议、地址、资源 .

URL的构造方法

public URL(String spec) throws
MalformedURLException
try { url=new
URL("http://www.tup.tsinghua.edu.cn");
}
catch(MalformedURLException e)
{ System.out.println ("Bad URL:"+url);
}
11.2 读取URL中的资源

URL对象调用InputStream openStream()
方法可以返回一个输入流,该输入流指向
URL对象所包含的资源。通过该输入流可
以将服务器上的资源信息读入到客户端。
11.3 显示URL资源中的html文件

Javax.swing包中的JEditorPane容器可以解
释执行html文件,也就是说,如果你把html
文件读入到JEditorPane,该html文件就会
被解释执行,显示在JEditorPane容器中,
这样程序就看到了网页的运行效果。
11.4 处理超链接

当JEditorPane对象调用setEditable方法将
编辑属性设为false时,不仅可以显示网页
的运行效果,而且用户如果单击网页中超
链接还可以使得JEditorPane对象触发
HyperlinkEvent事件。程序可以通过处理
HyperlinkEvent事件,来显示新的URL资源。
11.5 InetAdress类
java.net包中的InetAddress类对象含有一个
Internet主机地址的域名和IP地址:
www.sina.com.cn/202.108.35.210。
 域名容易记忆,当你在连接网络时输入一
个主机的域名后,域名服务器(DNS)负
责将域名转化成IP地址,这样我们才能和主
机建立连接。

11.6 套接字
IP地址标识Internet上的计算机,端口号标
识正在计算机上运行的进程(程序)。
 端口号与IP地址的组合得出一个网络套接字。

客户端的套接字对象

客户端建立到服务器的套接字连接
try{ Socket mysocket=
new Socket(“http://192.168.0.78”,1880);
}
catch(IOException e){}
获取输入输出流

套接字连接mysocket建立后 ,mysocket可以使
用方法getInputStream()获得一个输入流,然后用
这个输入流读取服务器放入“线路”的信息 (但
不能读取自己放入“线路”的信息,就象打电话
时,我们只能听到对方放入线路里的声音一样)。
mysocket还可以使用方法getOutputStream()获得
一个输出流,然后用这个输出流将信息写入“线
路”。
服务器端的套接字对象


服务器必须建立一个等待接收客户的套接字的ServerSocket
对象。ServerSocket的构造方法是:
ServerSocket(int port)
port是一个端口号。port必须和客户呼叫的端口号相同。
当服务器的ServerSocket对象server_socket建立后,就可以
使用方法accept()接收客户的套接字连接呼叫,所谓“接收”
客户的套接字连接就是accept()会返回一个和客户端Socket对
象相连接的驻留在服务器端的Socket对象,服务器端的这个
Socket对象sc使用方法getOutputStream()获得的输出流将指
向客户端Socket对象mysocket使用方法getInputStream()获得
的那个输入流;同样,服务器端的这个Socket对象sc使用方
法getInputStream()获得的输入流将指向客户端Socket对象
mysocket使用方法getOutputStream()获得的那个输出流
套接字连接示意图
11.7 网络中的数据压缩与传输

当使用套接字进行网络通信时,可以使用
ZipOutputStream流进行数据压缩,将套接字返回
的输出流作为ZipOutputStream流的底层流,然后
ZipOutputStream流out将数据压缩到底层流发送
到目的地。使用ZipOutputStream类可以若干个文
件压缩到底层流发送到目的地。首先使用
ZipOutputStream类的构造方法public
ZipOutputStream(OutputStream out)创建一个对
象,该对象以套接字返回的输出流作为目的地,
即作为该流的底层流
11.8 UDP数 据 报


基于UDP的通信和基于TCP的通信不同,基于
UDP的信息传递更快,但不提供可靠性保证。也
就是说,数据在传输时,用户无法知道数据能否
正确到达目的地主机,也不能确定数据到达目的
地的顺序是否和发送的顺序相同。
基于UDP通信的基本模式是:
(1)将数据打包,称为数据包(好比将信件装
入信封一样),然后将数据包发往目的地。
(2)接受别人发来的数据包(好比接收信封一
样),然后查看数据包中的内容。
1.发送数据包


1.
2.

用DatagramPacket的构造方法创建待发送的数据包:
DatagramPacket(byte data[],
int length,
InetAddtress address,int port):
使用该构造方法创建的数据报对象具有下列两个性质:
含有data数组指定的数据。
该数据包将发送到地址是address、端口号是port的主机
上。
用 DatagramSocket类的不带参数的构造方法:
DatagramSocket()创建一个对象,该对象负责发送数据
包。
2.接收数据包
用 DatagramSocket类另一个构造方法:
DatagramSocket(int port) 创建一个对象,
其中的参数必须和待接收的数据包的端口
号相同。
 DatagramSocket对象使用方法
receive(DatagramPacket pack)接受数据
包.

11.9 广播数据报


Internet的地址是a.b.c.d的形式。当a小于128,那么b.c.d
就用来表示主机,这类地址称做A类地址。如果a大于等于
128并且小于192,则a.b表示网络地址,而c.d表示主机地
址,这类地址称做B类地址。如果a大于等于192,则网络
地址是a.b.c,d表示主机地址,这类地址称做C类地址。
224.0.0.0~224.255.255.255是保留地址,称做D类地址。
要广播或接收广播的主机都必须加入到同一个D类地址。
一个D类地址也称做一个组播地址,D类地址并不代表某个
特定主机的位置,一个具有A、B或C类地址的主机要广播
数据或接收广播,都必须加入到同一个D类地址。加入到
同一个组播地址的主机可以在某个端口上广播信息,也可
以在某个端口号上接收信息。