JAVA 第十一周学习总结
20175308 2018-2019-2 《Java程序设计》第十一周学习总结
教材学习内容总结
13.1 URL类:
URL类是java.net包中的一个类,用URL创建的对象可以获取URL中的资,其包括三部分信息:协议、地址和资源。注意,协议必须被Java虚拟机所支持,地址必须是能链接的IP地址或域名。
URL类有两个构造方法来创建URL对象:①
public URL [链接名] throws MalformedURLException;
②public URL([协议],[地址],[资源]) throws Exception
URL对象调用
InputStream()
方法返回一个指向对象包含的资源的输入流,可以用来读取信息。
13.2 InetAddress类
Internet上的主机有两种方式来表示地址:①地址(如www.xxxxxxxx.com)②IP地址(如202.xxxxxxx)。
InetAdress类的两个
static
方法:①getByName(String s)
,其中s是域名或者IP地址,调用此方法可以获得InetAdress对象,含有主机地址的域名与IP地址,表示信息的格式为[域名]/[IP地址];②getLocalHost()
获得一个InetAdress对象,该对象还有本地机器的域名和IP地址。同时,IntAdress类中还有两个实例方法:①public String getHostName()
获取对象所含的域名;②public String getHostAdress()
获取对象所含的IP地址。
13.3 套接字:
IP地址表示计算机,端口号表示进程(线程),Socket类创建套接字对象并连接在一起(端口号与IP地址组合)。
客户端程序用Socket类创建负责连接到服务器的套接字对象,其构造方法为
Socket([IP地址],[端口号])(可能抛出IOException异常)
。对套接字对象建立后,可以使用①getInputStream()
获得一个输入流来读取服务器写入到输出流中的数据;②getOutputStream()
获得一个输出流,服务器可以用输入流来读取客户写入到输出流中的数据。客户负责建立连接到服务器的套接字对象。服务器需要创建一个ServerSocket对象来将客户端的套接字对象与服务器的套接字对象连接起来。ServerSocket的构造方法是ServerSocket([端口号])(当端口已被占用会抛出IOException异常)。接着,ServerSocket对象调用accept()方法再次返回一个与客户端对象相连接的新的Socket对象。同样的,它也具有上述的两个方法。
从套接字连接中读取数据,可能在另一端数据发送之前就已经开始读取了,而且会阻塞本线程,直到成功读取到信息。同时,accept方法也会阻塞线程的执行,直到收到客户的呼叫。为了解决“收不到呼叫而导致程序无法继续运行”的情况,ServerSocket对象在调用accept方法之前可以先调用setTimeout(s)方法来使得在调用accept方法时如果超过s毫秒没有收到呼叫,就抛出SocketTimeoutException异常。
通信完毕后要使用
close
关闭连接- 使用多线程技术:由于使用套接字连接中读取数据时,可能会阻塞本线程直到成功读取到信息。为了避免这种情况,需要启动一个专门为该客户服务的线程。Socket的构造方法Socket()可以创建一个套接字对象,该对象调用
public void connect(SocketAddress endpoint) throws IOException
来与指定的套接字创建连接。这里的参数可以使用InetSocketAddress的构造方法public InetSocketAdress(InetAdress addr,int port)
来获得。 套接字通信的两个基本原则:
①服务器要启动一个专门的线程与客户的套接字建立连接;
②套接字的输入流在读取信息时可能发生阻塞,所以客户端与服务器端都需要在一个单独的线程中读取信息。13.4 UDP数据报
比较UDP协议与TCP协议:UDP速度较快,但无法保证能否送到目的地且无法保证送达时的顺序。
数据包的发送与接收:使用DatagramPacked类的构造方法
DatagramPacket([字节数组],[长度],[地址],[端口])
创建数据包对象,使用DatagramSocket类创建的对象调用send([数据包])方法来发送数据包。要接收数据包之前,首先要用使用DatagramSocket类创建的对象,调用构造方法DatagramSocket(端口号)与被发送的数据包创建连接,然后这个创建的对象调用receive([数据包])方法来接收数据包,其中数据包对象可以用DatagramSocket类得到构造方法DatagramPacket([字节数组],[长度])
来创建数据包对象。
注意事项:receive方法可能引起阻塞,直到收到数据包,且数据包的长度不能超过8192KB
13.5 广播数据报
(此处内容在计算机网络课中已有提及,简单介绍)
Internet的地址是a.b.c.d的形式,计算机地址分为四大类:
②A类:a<128,则a表示网络地址,b,c,d表示主机地址;
②B类:128<=a<192,则a,b表示网络地址,c,d表示主机地址;
②B类:192<=a则a,b,c表示网络地址,d表示主机地址;
②B类:224.0.0.0~224.255.255.255是保留地址,称为D类地址。
教材学习中的问题和解决过程
- 本章内容与目前实际应用关联相对较小,除了课本中的内容缺少实践操作的机会。实验五题为网络编程,等到完成相关的练习理解应该会更加透彻。
- 最近琐事颇多,对学习java带来了比较大的时间冲击。有许多问题来不及写入本博客中,有时间会再详细介绍。
代码托管
JAVA 第十一周学习总结的更多相关文章
- 201521123093 java 第十一周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- Java第十一周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- 201521123061 《Java程序设计》第十一周学习总结
201521123061 <Java程序设计>第十一周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 本周学习的是如何解决多线程访问中的互斥 ...
- 201521123072《java程序设计》第十一周学习总结
201521123072<java程序设计>第十一周学习总结 1. 本周学习总结 2. 书面作业 本次PTA作业题集多线程 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问 ...
- 201521123038 《Java程序设计》 第十一周学习总结
201521123038 <Java程序设计> 第十一周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多 ...
- 杨其菊/常惠琢《面向对象程序设计(java)》第十一周学习总结
<面向对象程序设计>第十一周学习总结 第一部分:理论知识 JAVA的集合框架 JAVA的集合框架实现对各种数据结构的封装,以降低对数据管理与处理的难度. 所谓框架就是一个类库的集合,框 ...
- “2017面向对象程序设计(Java)第十一周学习总结”存在问题的反馈及教学安排
“2017面向对象程序设计(Java)第十一周学习总结”存在问题的反馈及教学安排1.“提出表扬的同学:姜依萍,王雪玲,徐楠,相文君,赵晓未提交作业的同学:任红强,王瑞强,宗鹏新,扎西才让,布旦刀杰,范 ...
- 20172325 2017-2018-2 《Java程序设计》第十一周学习总结
20172325 2017-2018-2 <Java程序设计>第十一周学习总结 教材学习内容总结 Android简介 Android操作系统是一种多用户的Linux系统,每个应用程序作为单 ...
- 20172330 2017-2018-1 《Java程序设计》第十一周学习总结
20172330 2017-2018-1 <程序设计与数据结构>第十一周学习总结 教材学习内容总结 本周的学习内容为集合 Android简介 Android操作系统是一种多用户的Linux ...
随机推荐
- mysql 导出 导入sql 文件
C:\Users\Eric>mysqldump -uroot -p demo->数据库名 > C:\Users\Eric\demo.sql 导出目录地址 导入 sq ...
- hashlib模块和hmac模块
hashlib模块和hmac模块 hashlib模块 一.导入方式 import hashlib 二.作用 无论你丢什么字符串,他都会返回一串 固定长度的字符串 三.模块功能 3.1 经常使用 imp ...
- py3 base64加密
import base64 #字符串编码: encodestr = base64.b64encode('abcr34r344r'.encode('utf-8')) print(str(encodest ...
- MYSQL 的事物处理(四大特性)
什么是事物? MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库 ...
- linux复习4:文件和目录
7一.linux文件 1.linux文件的扩展名:文件扩展名是文件名最后一个点之后的部分,下面列出了其中一部分 (1)压缩文件和归档文件 压缩和归档的文件扩展名及其含义如下. .bz2:使用bzip2 ...
- composer之predis
安装: composer require predis/predis 即可 predis是PHP连接Redis的操作库,由于它完全使用php编写,大量使用命名空间以及闭包等功能,只支持php5 ...
- java 判断5张牌的组成
题目: 一副牌中发五张扑克牌给你,判断是四条,三带二.三带一加一.两对.一对.顺子.还是什么都不是. 控制台输入: 1,1,1,1,2 示例输出: 四条 Java方法的代码: static Strin ...
- 利用logrotate切割nginx的access.log日志
一.新建一个nginx的logrotate配置文件 /var/log/nginx/access.log { daily rotate compress delaycompress missingok ...
- vue项目中利用popstate处理页面返回操作
需求背景:项目中需要做一个返回确认,避免用户误触返回键而退出当前页面. 原理:利用history和浏览器刷新popstate状态 实现: 1.在mounted() 阶段判断并添加popstate事件监 ...
- bootstrap-table.min.js不同版本返回分页参数不同的问题
1.使用公司用的bootstrap-table.min.js ,刚开始bootstrap-table分页参数是这么写的 分页查询参数: 后端代码为: Result返回类的参数为list,以及total ...