170 likes | 269 Views
第 11 章 Java 网络的基本知识. 11.1 使用 URL 11.2 读取 URL 中的资源 11.3 显示 URL 资源中的 html 文件 11.4 处理超链接 11.5 InetAdress 类 11.6 套接字 11.7 网络中的数据压缩与传输 11.8 UDP 数 据 报 11.9 广播数据报. 11.1 使用 URL.
E N D
第11章 Java网络的基本知识 • 11.1使用URL • 11.2读取URL中的资源 • 11.3显示URL资源中的html文件 • 11.4处理超链接 • 11.5InetAdress类 • 11.6套接字 • 11.7 网络中的数据压缩与传输 • 11.8UDP数 据 报 • 11.9广播数据报
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= newSocket(“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.发送数据包 • 用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类地址。加入到同一个组播地址的主机可以在某个端口上广播信息,也可以在某个端口号上接收信息。