一、教材学习内容总结
一、URL类
URL类在java.net包中,URL对象包含最基本的三部分信息:协议、地址和资源:地址必须是能连接的有效IP地址或域名;资源可以是主机上的任何一个文件;
URL对象:public URL(String spec)throws MalformedURLException
URL对象调用Input Stream openStream():返回一个输入流;
InetAddress类:主要用于后面作为其他类的方法的参数 格式:域名+IP地址
- 套接字
端口号:16位的0~65535
客户端程序使用Socket类负责连接服务器的套接字对象
Client Socket可使用(1)getInputStream():获取输入流
- getOutputStream():获取输出流
服务器必须建立一个ServerSocket对象:
构造方法:ServerSocket(int port),其中port是端口号
使用方法accept()将它们连接起来,注意:accept()方法也会阻塞线程的执行
- 多线程技术
- Socket()创建一个套接字对象;
- 再调用public void connect(SocketAddress endpoint)throws IOException
- 创建一个InetSocketAddress构造方法:public InetSocketAddress(InetAddress addr,int port)
- UDP数据报
- 将数据打包:DatagramPacket类,send(DataPack):发送数据包
- 接收发来的数据报:DatagramSockect类,recevice(DatagramPacket pack)
- 广播数据报
A<128 | 128<=a<192 | A>=192 | - |
B.c.d就用来表示主机 | A.b表示网络地址,c.d表示主机地址 | 网络地址是a.b.c d表示主机地址 | 224.0.0.0~239.255.255.255是保留地址 |
A类地址 | B类地址 | C类地址 | D类地址 |
一个具有A,B或C类地址的主机要广播数据或接受广播,都必须加入到同一个D类地址。
六、Java远程调用
(1)远程对象:驻留在(远程)服务器的对象是客户要请求的对象,称作远程对象。
(2)代理与存根(stub)
代理:它与远程对象实现了相同的接口;
存根:一种特殊的字节码,并让这个存根产生的对象作为远程对象的代理;
(3)Remote接口;
RML负责产生存根(stub),使用rmic命令
(4)启动注册:rmiregietry
RML要求远程服务器必须首先启动注册rmiregistry:
(1)在MS-DOS命令行窗口,执行rmiregistry;
(2)后台启动注册:start rmiregistry
(5)启动远程对象服务(创建主类)
(6)运行客户端程序
客户端使用java.rmi包中的Naming类调用其类方法lookup(String name)返回一个远程对象的代理,存根访问一个远程的对象。
二、教材学习中的问题和解决过程
1、例子4中的mysocket.connect(socketAddress)是干什么的?有什么用?
这个使用了回调,主要是为了跟服务器连接。
2、一个URL对象通常包含哪些信息?
一个URL对象包含协议,地址和资源。
3、远程对象有什么作用?
为了响应客户的请求。
三、其他(感悟)
在这一章的学习中,发现本章提供了更加专门的网络编程的类。重点是URL、Socket、InetAddress和DatagramSocket类,在网络编程中起很重要的作用,还有远程调用,需要一个类既要实现自己的功能,也要实现Remote接口,这样更好联系起来。