20145105 《Java程序设计》第10周学习总结
教材学习内容总结
JAVA网络编程
一、网络概述
(一)计算机网络概述
-
网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。
-
IP地址:,网络中的每个设备都会有的一个唯一的数字标识,方便识别网络上的每个设备。
-
域名:比IP地址更方便记忆,一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。
-
DNS服务器:将域名转换为IP地址
-
端口:端口的号码必须位于0-65535之间,每个端口唯一的对应一个网络程序,一个网络程序可以使用多个端口。
-
IP地址——端口:相当于总机与分机的关系,在进行网络通讯交换时,通过IP地址查找到该台计算机,然后通过端口标识这台计算机上的一个唯一的程序。
(二)网络编程概述
-
客户端:第一次主动发起通讯的程序
-
服务器端:在第一次通讯中等待连接的程序
-
C/S结构(客户端/服务器结构):开发时需要分别开发客户端和服务器端
- 优势:表现力丰富,
- 缺陷:通用性差,维护的压力比较大
-
B/S结构(浏览器/服务器结构):在开发时只需要开发服务器端即可
- 优势:开发的压力比较小,不需要维护客户端
- 缺陷:浏览器的限制比较大,表现力不强,无法进行系统级操作等
-
协议:网络中传输的数据格式
(三)网络通讯方式
-
TCP(传输控制协议)方式:
- 类似打电话
- 需要建立专门的虚拟连接,然后进行可靠的数据传输
- 如果数据发送失败,则客户端会自动重发该数据
- 用于传输重要数据
- 速度稍慢
-
UDP(用户数据报协议)方式:
- 类似发短信
- 不需要建立专门的虚拟连接,传输也不是很可靠
- 如果发送失败则客户端无法获得
- 用于传输大量的非核心数据
二、网络编程技术
(一)网络编程步骤
-
客户端的编程:
-
建立网络连接
- 客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
-
交换数据(可多次)
- 连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。
-
关闭网络连接
- 在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。
-
-
服务器的编程:
-
监听端口
-
服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。
-
这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。
-
-
获得连接
-
当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。
-
一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
-
-
交换数据(可多次)
- 服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。
-
关闭连接
-
代码实践见实验博客部分
教材学习中的问题和解决过程
-
对于IP和端口仅仅有个概念,实践时不知道从哪获取
解决过程:询问同学后知道了,IP地址可以通过命令行:ipconfig查看,端口号是自己设定的
代码调试中的问题和解决过程(即实验问题)
-
在连接时客户端一方总是提示连接超时
解决过程:在对比ipcongfig命令查看到的所有连接情况后,我们发现写错了IP地址,即连接的是WI-FI,但写的是本地连接的IP,修改后可以连接
-
调用RSA加密代码文件时,总是提示找不到指定文件
解决过程:将调用方法中的文件名改为文件路径,强制读取该文件
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目 标 | 3000行 | 15篇 | 300小时 | |
第一周 | 70/70 | 2/2 | 14/14 | |
第二周 | 150/220 | 1/3 | 18/32 | |
第三周 | 400/620 | 1/4 | 35/67 | |
第四周 | 850/1470 | 1/5 | 30/97 | |
第五周 | 560/2030 | 1/6 | 34/131 | |
第六周 | 970/3000 | 2/8 | 39/170 | |
第七周 | 430/3430 | 2/10 | 23/193 | |
第八周 | 230/3660 | 2/12 | 27/220 | |
第九周 | 267/3927 | 2/14 | 32/252 | |
第十周 | 134/4061 | 2/16 | 26/278 |