教材学习内容总结
第十三章
- URL类
URL类是java.net包中的一个重要的类,使用URL创建对象的应用程序称为客户端程序。
1.1URL的构造方法
创建一个URL对象:public URL (String spec)throws MalformedURLException
1.2读取URL中的资源
URL对象调用InputStream openStream()方法可以返回一个输入流,该输入流指向URL资源所包含的资源。
- InetAddress类
2.1地址的表示
(1)域名
(2)IP地址
2.2获取地址
(1)获取Internet上主机的地址
InetAddress类中的两个实例方法
public String getHostName()获取对象所含的域名。
public String getHostAddress()获取对象所含的IP地址。
(2)获取本机的地址
使用getLocalHost()获得一个InetAddress对象,该对象含有本地机器的域名和IP地址。
- 套接字
3.1套接字概述
当两个程序需要通信时,它们可以通过使用Socket类建立套接字对象并连接在一起。
3.2客户端套接字
客户端的程序使用Socket类建立负责连接到服务器的套接字对象。
Socket的构造方法是Socket(String host,int port),参数host是服务器的IP地址,port是一个端口号。
3.3ServerSocket对象与服务器端套接字
服务器必须建立一个ServerSocket对象,该对象通过将客户端的套接字对象和服务器端的一个套接字对象连接起来,从而达到连接的目的。
3.4使用多线程技术
为了防止堵塞线程,服务器端收到一个客户的套接字后,就应该启动一个专门为该客户服务的线程。
可以用Socket类不带参数的构造方法Socket()创建一个套接字对象,该对象需调用public void connect(SocketAddress endpoint) throws IOException请求和参数SocketAddress指定地址的套接字建立连接。
套接字通信两个基本原则:
- 服务器应当启动一个专门的线程,在该线程中和客户的套接字建立连接。
- 由于套接字的输入流在读取信息时可能发生阻塞,客户端和服务器端都需要在一个单独的线程中读取信息。
4.UDP数据报
基于UDP的通信和基于TCP的通信不同,基于UDP的信息传递更快,但不提供可靠性保证。
基于UDP通信的基本模式是:
(1)将数据打包,称为数据包(好比将信件装入信封一样),然后将数据包发往目的地。
(2)接受别人发来的数据包(好比接收信封一样),然后查看数据包中的内容。
4.1发送数据包
用DatagramPacket类将数据打包,即用DatagramPacket类创建一个对象,称为数据包。
构造方法:
DatagramPacket(byte data[],int length,InetAddtress address,int port)
DatagramPack(byte data[],int length,InetAddtress address,int port)
4.2接受数据包
首先用DatagramSocket的另一个构造方法DatagramSocket(int port) 创建一个对象,其中的参数必须和待接收的数据包的端口号相同。然后对象mail_in使用方法receive(DatagramPacket pack)接受数据包。
5.广播数据包
要广播或接收广播的主机都必须加入到同一个D类地址。
6.远程调用
习惯上称发出调用请求的虚拟机(JVM)为(本地)客户机,称接受并执行请求的虚拟机(JVM)为(远程)服务器。
6.1远程对象及其代理
(1)远程对象:
驻留在(远程)服务器上的对象是客户要请求的对象,称作远程对象。即客户程序请求远程调用方法,然后远程对象调用方法并返回必要的结果。
(2)代理与存根(Stub):
代理的特点是它与远程对象实现了相同的接口。
存根(Stub):一种特殊的字节码,并让这个存根产生的对象为作为远程对象的代理。
(3)Remote接口
RMI为了标识一个对象是远程对象,即可以被客户请求的对象,要求远程对象必须实现java.rmi包中的Remote接口,也就是说只有实现该接口的类的实例才被RMI认为是一个远程对象。Remote接口中没有方法,该接口仅仅起到一个标识作用。
6.2RMI的设计细节
(1)扩展Remote接口
定义一个接口是java.rmi包中Remote的子接口,即扩展Remote接口。
(2)远程对象
创建远程对象的类必须要实现Remote接口,RMI使用Remote接口来标识远程对象。
6.3存根(Stub)与代理
RMI负责产生存根,如果创建远程对象的字节码是RemoteConcrete Subject.class,那么存根的字节码是RemoteConcreteSubject_Stub.class,即后缀改为“_Stub”。
RMI使用rmic命令生成存根RemoteConcreteSubject_Stub.class。
6.4启动注册:rmiregistry
6.5启动远程对象服务
远程服务器启动注册rmiregistry后,远程服务器就可以启动远程对象服务了,即编写程序来创建和注册远程对象,并运行该程序。
6.6运行客户端程序
远程服务器启动远程对象服务后,客户端就可以运行有关程序,访问使用远程对象。
教材学习中的问题和解决过程
注意 区分客户端和服务器端的区别以及调用的方法。
代码调试中的问题和解决过程
多看例子,能更好的深入理解方法的使用。
其他
还是要多敲代码才可以啊。
学习进度条
|
代码行数(新增/累积) |
博客量(新增/累积) |
学习时间(新增/累积) |
重要成长 |
目标 |
2000行 |
10篇 |
80小时 |
|
第一周 |
67/67 |
1/1 |
8/8 |
|
… |
… |
… |
… |
|
第十二周 |
350/3391 |
1/12 |
7/95 |
|
参考资料
《Java2实用教程(第5版)》