20145329《Java程序设计》第十周学习总结
教材学习内容总结
网络编程
• 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据。程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据
1.网络概述
• 网络编程的实质:两个(或多个)设备(例如计算机)之间的数据传输。
• 计算机网络:通过一定的物理设备将处于不同位置的计算机连接起来,这个网络中包含的设备有:计算机、路由器、交换机等等,路由器和交换机组成了核心的计算机网络。
•IP地址:为了能够方便的识别网络上的每个设备,网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址,计算机在联网以后都拥有一个唯一的合法IP地址,就像每个手机号码一样。
• 域名:一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。
• DNS服务器(域名解析):在网络中传输的数据,全部是以IP地址作为地址标识,所以在实际传输数据以前需要将域名转换为IP地址,实现这种功能的服务器称之为DNS服务器,也就是通俗的说法叫做域名解析。
• 端口:计算机上通过端口区分发送给每个端口的数据了,端口的号码必须位于0-65535之间,每个端口唯一的对应一个网络程序,一个网络程序可以使用多个端口。
2.网络编程概述
• 网络编程:两个或多个设备之间的数据交换,网络编程是两个或多个程序之间的数据交换,需要交换数据的程序运行在不同的计算机上。
• 客户端与服务器:在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。
• 服务器结构:(1)客户端/服务器结构,也叫做Client/Server结构,简称C/S结构。(2)用浏览器作为客户端的结构被称作浏览器/服务器结构,也叫做Browser/Server结构,简称为B/S结构,B/S结构其实也就是一种特殊的C/S结构。
• 协议:对于网络中传输的数据格式在网络编程中就被称作协议。
3.网络通讯方式
• 两种主要的网络通讯方式:
(1) TCP(传输控制协议)方式:
TCP方式就类似于拨打电话,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据
(2) UDP(用户数据报协议)方式:
类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。
网络编程技术
1.网络编程步骤
• 客户端网络编程步骤
(1) 建立网络连接
(2) 交换数据
(3) 关闭网络连接
• 服务器端网络编程步骤
(1) 监听端口
(2) 获得连接
(3) 交换数据
(4) 关闭连接
2.Java网络编程技术
• 网络编程的基础:和网络编程有关的基本API位于java.net包中,该包中包含了基本的网络编程实现。
• InetAddress类:基础的网络类,代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。
(1)使用域名创建对象:
InetAddress inet1 = InetAddress.getByName("www.163.com");
(2)使用IP创建对象
InetAddress inet2 = InetAddress.getByName("127.0.0.1");
(3)获得本机地址对象
InetAddress inet3 = InetAddress.getLocalHost();
(4)获得对象中存储的域名
String host = inet3.getHostName();
(5)获得对象中存储的IP
String ip = inet3.getHostAddress();
3.TCP编程
• TCP方式的网络编程:在实际实现时,以java.net.Socket类代表客户端连接,以java.net.ServerSocket类代表服务器端连接。
• 实现步骤:
(1)建立客户端网络连接,也就是创建Socket类型的对象
Socket socket1 = new Socket(“192.168.1.103”,10000);
(2)按照“请求-响应”模型进行网络数据交换
OutputStream os = socket1.getOutputStream(); //获得输出流
InputStream is = socket1.getInputStream(); //获得输入流
(3)关闭网络连接:
socket1.close();
• 实现服务器端监听的代码为:
ServerSocket ss = new ServerSocket(端口号);
• 实现获得连接的代码是:
Socket socket = ss.accept();
• 关闭服务器端连接:
ss.close();
• 服务器端是对话一次数据以后就关闭了连接,如果服务器端程序关闭了,客户端继续发送数据肯定会出现异常。
- UDP编程
• 在Java API中,实现UDP方式的编程,包含客户端网络编程和服务器端网络编程,主要由两个类实现,分别是:
(1)DatagramSocket
DatagramSocket类实现“网络连接”,包括客户端网络连接和服务器端网络连接。
(2)DatagramPacket
DatagramPacket类实现对于网络中传输的数据封装,也就是说,该类的对象代表网络中交换的数据。
• 实现步骤:
(1)建立连接
DatagramSocket ds = new DatagramSocket();
(2)发送数据
ds.send(sendDp);
(3)接收数据
ds.receive(receiveDp);
(4)关闭连接
ds.close();
• 获得客户端的IP
InetAddress clientIP = receiveDp.getAddress();
• 获得客户端的端口号
Int clientPort = receiveDp.getPort();
需要特别指出的是UDP方式的网络编程由于不建立虚拟的连接,所以在实际使用时和TCP方式存在很多的不同,最大的一个不同就是“无状态”。该特点指每次服务器端都收到信息,但是这些信息和连接无关,换句话说,也就是服务器端只是从信息是无法识别出是谁发送的,这样就要求发送信息时的内容需要多一些,这个在后续的示例中可以看到。
网络协议
• 两个网络协议格式:客户端发送数据格式和服务器端反馈数据格式。
• 客户端程序需要完成的处理为:
(1)客户端发送协议格式的生成
(2)服务器端反馈数据格式的解析
服务器端程序需要完成的处理为:
(1)服务器端反馈协议格式的生成
(2)客户端发送协议格式的解析
1.质数判别示例
• (1)客户端程序功能:
a)接收用户控制台输入
b)判断输入内容是否合法
c)按照协议格式生成发送数据
d)发送数据
e)接收服务器端反馈
f)解析服务器端反馈信息,并输出
(2)服务器端程序功能:
a)接收客户端发送数据
b)按照协议格式解析数据
c)判断数字是否是质数
d)根据判断结果,生成协议数据
e)将数据反馈给客户端
• 客户端发送协议格式:将用户输入的数字转换为字符串,再将字符串转换为byte数组即 可。客户端发送“quit”字符串代表结束连接。
服务器端发送协议格式:
反馈数据长度为1个字节。数字0代表是质数,1代表不是质数,2代表协议格式错误。
2.猜数字小游戏
• (1)客户端程序功能列表:
a)接收用户控制台输入
b)判断输入内容是否合法
c)按照协议格式发送数据
d)根据服务器端的反馈给出相应提示
e)接收服务器端反馈
f)解析服务器端反馈信息,并输出
(2)服务器端程序功能列表:
a)接收客户端发送数据
b)按照协议格式解析数据
c)判断发送过来的数字和随机数字的关系
d)根据判断结果生产协议数据
e)将生产的数据反馈给客户端
• 客户端程序协议格式如下:
1、 将用户输入的数字转换为字符串,然后转换为byte数组
2、 发送“quit”字符串代表退出
• 服务器端程序协议格式如下:
1、 反馈长度为1个字节,数字0代表相等(猜中),1代表大了,2代表小了,其它数字代表错误。
教材学习中的问题和解决过程
UDP编程与TCP编程的区别及优缺点
udp协议于tcp协议最本质的区别是:udp不基于连接,tcp基于连接;简单的说就是通信双方是否在自己的机器上保持对方身份的记录,tcp保持,udp不保持。
udp适合传输数据内容不太敏感,丢失、误传影响不大的工作,例如局域网聊天、设备发现;tcp范围就太广了,凡是应用规模大点、网络环境恶劣点的应用都需要,例如ftp、网管、下载软件等。
另外在网络环境相同的情况下,使用默认的tcp和udp协议时,网络好udp的效率高一些,而网络不好tcp的稳定性高一些。
代码调试中的问题和解决过程
本周代码托管截图
感悟
感觉java的学习道路上又迈上了一个新台阶,学会了就很有趣,但是在学习的过程中确实需要很多的耐心,毕竟在还不知道它的具体的内容和用途的时候,要枯燥的学习它的一些定义和功能是很烦人的,还需要努力~
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 2/2 | 20/20 | 实现“HelloWorld” |
第二周 | 100/150 | 2/4 | 20/20 | 学会用IDEA编写代码 |
第三周 | 100/250 | 2/6 | 20/20 | 掌握更多的语法知识 |
第四周 | 150/400 | 1/7 | 20/20 | 学会用Git托管代码 |
第五周 | 150/550 | 1/8 | 20/20 | 掌握更多的语法知识 |
第六周 | 550/1100 | 1/9 | 20/20 | 掌握更多的语法知识 |
第七周 | 100/1200 | 1/10 | 20/20 | 时间日期 |
第八周 | 100/1300 | 1/11 | 10/10 | 通用API |
第九周 | 100/1400 | 1/12 | 20/20 | 数据库 |
第十周 | 0/1400 | 1/13 | 10/10 | 网络编程 |
参考资料
20145329《Java程序设计》第十周学习总结的更多相关文章
- 201521123027 <java程序设计>第十周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 异常: 多线程: 2.书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 ...
- Java程序设计第十周学习总结
Java课程知识梳理: 流的区分; 字符流与字节流的区别: 字节流是直接操作文件本身的,如果没有关闭字节流操作,文件会依然输出内容 而字符流在程序运行之后会发现文件没有任何的内容,这是因为字符流操作的 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20145237 《Java程序设计》第九周学习总结
20145237 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令 ...
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20172325 2018-2019-2 《Java程序设计》第九周学习总结
20172325 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 图的定义 图是由顶点集(VertexSet)和边集(EdgeSet)组成,针对图G,顶点集和 ...
- 20155334 2016-2017-2 《Java程序设计》第九周学习总结
20155334 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章:整合数据库 16.1 JDBC入门 JDBC(Java DataBase Conn ...
随机推荐
- XStream别名;元素转属性;去除集合属性(剥皮);忽略不需要元素
city package xstream; public class City { private String name; private String description; public St ...
- ps -aux | egrep 多个值
ps -aux |egrep "(schedule.jar|positec.jar|time_server.jar|tomcat-xweb/)"
- 通过SSH连接mysql
- 170407、java基于nio工作方式的socket通信
客户端代码: /** * */ package com.bobohe.nio; import java.io.BufferedReader; import java.io.IOException; i ...
- 解决:R读取含中文excel文件,read.xlsx乱码问题
1.新建testexcel.xlsx文件 2.创建R文件:test.R # 定义文件变量 excel_path <- "chapter2/testexcel.xlsx" # ...
- ORACLE安装(12c-Redhat6.5)
Oracle安装(12c-Redhat6.5) Redhat6.5系统准备 / 10G SWAP 4G /boot 200M /HOME 4G /usr 8G /var 4G /u01 Preinst ...
- 关于Springboot 中注入多个cacheManage 时候 存在报错
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'e ...
- Net 常用资源
opensource: http://www.dotnetfoundation.org/projects https://github.com/dotnet/corefx Enterprise Lib ...
- 【c++】生成浮点随机数
c++11:std::uniform_real_distribution<>直接求(尖括号不填默认生成double) 随机10个在1-2之间的浮点数 #include <random ...
- Shiro-Base64加密解密,Md5加密
Shiro权限框架中自带的加密方式有Base64加密,MD5加密 在Maven项目的pom.xml中添加shiro的依赖: <dependency> <groupId>org. ...