201711671233《Java程序设计》第13周学习总结
一、教程学习内容总结
这周主要学习了URL类,InetAddress类,套接字,UDP数字报,广播数据报,Java远程调用(RMI)。
(一)URL类
客户端程序:使用URL创建对象的应用程序。
一个URL对象通常包含最基本的三部分信息:协议、地址和资源。
URL类通常用public URL(String spec)throws MalformedURLException创建一个URL对象。
URL对象调用InputStream()方法可以返回一个输入流,该输入流指向URL对象所包含的资源。
(二)InetAddress类
地址的表示:域名(如www.baidu.com)和IP地址(如202.108.35.210)
InetAddress类对象含有一个Internet主机地址的域名和IP地址。
在连接网络时输入一个主机的域名后,域名服务器(DNS)负责将域名转化成IP地址。
获取地址:
1、获取Internet上主机的地址:getByName(String s)将域名或IP地址传递给该方法的参数s,获得一个InetAddress对象,该对象含有主机地址的域名和IP地址。
public String getHostName()获取InetAddress对象所含的域名。
public String getHostAddress()获取InetAddress对象所含的IP地址。
2、获取本地机的地址
getLocalHost()
(三)套接字
网络通信使用IP地址表示Internet上的计算机,使用端口号表示服务器上的进程(程序)。
端口号规定为一个16位的0~65535之间的整数,其中0~1023被预先定义的服务通讯占用。应该使用1024~65535中的某一个,避免发生端口冲突。
当两个程序需要通信时,可以通过使用Socket类建立套接字对象并连接在一起(端口号与IP地址的组合得出一个网络套接字)。
客户端套接字:客户端程序使用Socket建立负责连接到服务器的套接字对象。构造方法:Socket(String host,String port),参数host是服务器IP地址,port是端口号。
ServerSocket对象与服务器端套接字:服务器必须建立一个ServerSocket对象,该对象通过将客户端的套接字对象和服务器端的一个套接字对象连接起来,从而达到连接目的。
使用多线程技术:从套接字连接中读取数据与从文件中读取数据有着很大的不同。尽管都是输入流,但从文件中读取数据时,所有的数据都已经在文件中了;使用套接字连接时,可能在另一端把数据发送出来之前,就已经开始试着读取了,此时会阻碍本线程,直到该读取方法成功读取到信息,本线程才继续执行后续的操作。
套接字是基于TCP协议(传输控制协议)的网络通信,即客户端程序和服务器端程序是有连接的,双方的信息是通过程序中的输入、输出流来交互的,使得接收方收到信息的顺序和发送方发送信息的顺序完全相同。
(四)UDP数据报
UDP协议:用户数据报协议。
基于UDP通信的基本模式:
1、将数据打包(好比将信件装入信封一样),称为数据包,然后把数据包发往目的地。
2、接收发来的数据包(好比接收信封一样),然后查看数据包中的内容。
发送数据包:
用DategramPacket类将数据打包,即用DategramPacket类创建一个对象,称为数据包。
使用构造方法DategramPacket(byte data[],int length,InetAddress address,int port)创建的数据包对象具有两个性质:含有data数组指定的数据,该数据包将发送到地址是address,port是目标端口。
接收数据包:
用DategramPacket另一个构造方法DategramSocket(int port)创建一个对象,其中的参数必须和待接收的数据包的端口号相同。
(五)广播数据报
要广播或接收广播的主机都必须加入同一个D类地址。
(六)Java远程调用
远程调用RMI。
远程对象:驻留在(远程)服务器上的对象是客户请求的对象。
代理特点:代理与远程对象实现了相同的接口。
代理需要驻留在客户端,需要把RMI生成的存根复制或下载到客户端。
二、教程学习中的问题和解决过程
一开始没有搞清楚套接字怎么用,然后看着书上的代码,慢慢理解,然后就明白了。
三、学习进度条
| 代码行数 (新增/累计) | 博客量 (新增/累计) | 学习时间 (新增/累计) |
目标 | 2500行 | 10篇 | 200小时 |
第一周 | 30 | 1 | 10 |
第二周 | 30/60 | 1/2 | 10/20 |
第三周 | 30/90 | 1/3 | 10/30 |
第四周 | 30/120 | 1/4 | 10/40 |
第五周 | 30/150 | 1/5 | 10/50 |
第六周 | 30/180 | 1/6 | 10/60 |
第七周 | 50/230 | 1/7 | 10/70 |
第八周 | 100/330 | 1/8 | 10/80 |
第九周 | 100/430 | 1/9 | 10/90 |
第十周 | 200/630 | 1/10 | 10/100 |
第十一周 | 270/900 | 1/11 | 10/110 |
第十二周 | 300/1200 | 1/12 | 10/120 |
第十三周 | 300/1500 | 1/13 | 10/130 |
四、参考资料
Java2实用教程(第5版)