20145311 《Java程序设计》第十周学习总结
20145311 《Java程序设计》第十周学习总结
教材学习内容总结
网络编程
·网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据
·程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴。
IP地址与端口
·网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址
·在计算机网络中,现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4个0-255之间的数字组成
·一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。
·当用户在浏览器输入域名时,浏览器首先请求DNS服务器,将域名转换为IP地址,然后将转换后的IP地址反馈给浏览器,然后再进行实际的数据传输。
·为了让一个计算机可以同时运行多个网络程序,就引入了另外一个概念——端口(port) 前台总机的电话号码就相当于IP地址,而每个员工的分机号就相当于端口
网络编程的两种模型
·网络编程中的两种程序就分别是客户端和服务器端
·客户端/服务器结构,也叫做Client/Server结构,简称C/S结构。
·使用C/S结 构的程序,在开发时需要分别开发客户端和服务器端 在实际维护时,也需要维护专门的客户端和服务器端,维护的压力比较大。
使用浏览器作为客户端的结构被称作浏览器/服务器结构,也叫做Browser/Server结构,简称为B/S结构。 P2P程序是一种特殊的程序,应该一个P2P程序中既包含客户端程序,也包含服务器端程序
IP协议(Protocol)
在实际的网络程序编程中,最麻烦的内容不是数据的发送和接收,因为这个功能在几乎所有的程序语言中都提供了封装好的API进行调用,最麻烦的内容就是协议的设计以及协议的生产和解析,这个才是网络编程中最核心的内容。
网络协议就是一种格式上的约定,在进行设计时一般遵循“简单、通用、容易解析”的原则进行。网络通讯方式
1、 TCP(传输控制协议)方式
2、 UDP(用户数据报协议)方式
使用TCP方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。
使用UDP方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。
网络编程步骤
客户端网络编程的步骤:1、建立网络连接 2、交换数据 3、关闭网络连接
服务器端网络编程步骤:1、监听端口 2、获得连接 3、交换数据 4、关闭连接Socket socket1 = new Socket(“192.168.205.1”,10000);
Socket socket2 = new Socket(“www.baidu.com”,80);
OutputStream os = socket1.getOutputStream(); //获得输出流
InputStream is = socket1.getInputStream(); //获得输入流
socket1.close();
socket2.close();
Java网络编程技术
TCP与UDP方式编程
和网络编程有关的基本API位于java.net包中
在客户端网络编程中,首先需要建立连接,在Java API中以java.net.Socket类的对象代表网络连接,所以建立客户端网络连接,也就是创建Socket类型的对象,该对象代表网络连接
建立完对象后,分别从socket这个连接对象获得了输出流和输入流对象,在整个网络编程中,后续的数据交换就变成了IO操作,也就是遵循“请求-响应”模型的规定,先向输出流中写入数据,这些数据会被系统发送出去,然后在从输入流中读取服务器端的反馈信息,这样就完成了一次数据交换过程
accept和前面IO部分介绍的read方法一样,都是一个阻塞方法,也就是当无连接时,该方法将阻塞程序的执行,直到连接到达时才执行该行代码。
实现建立一次连接,进行多次数据交换:建立连接以后,将数据交换的逻辑写到一个循环中就可以了。这样只要循环不结束则连接就不会被关闭。服务器端支持多个客户端同时工作
一个服务器端一般都需要同时为多个客户端提供通讯,如果需要同时支持多个客户端,则必须使用前面介绍的线程的概念。简单来说,也就是当服务器端接收到一个连接时,启动一个专门的线程处理和该客户端的通讯。
UDP(User Datagram Protocol),中文意思是用户数据报协议,方式类似于发短信息,是一种物美价廉的通讯方式,使用该种方式无需建立专用的虚拟连接,由于无需建立专用的连接,所以对于服务器的压力要比TCP小很多
在Java API中,实现UDP方式的编程,包含客户端网络编程和服务器端网络编程,主要由两个类实现 DatagramSocket类实现“网络连接”,包括客户端网络连接和服务器端网络连接。 DatagramPacket类实现对于网络中传输的数据封装,也就是说,该类的对象代表网络中交换的数据。
UDP方式的建立连接和TCP方式不同,只需要建立一个连接对象即可,不需要指定服务器的IP和端口号码。实现的代码为:
DatagramSocket ds = new DatagramSocket();
代码调试中的问题和解决过程
用百度测试了一下InetAddress类
package com.company;import java.net.*;
public class Main { public static void main(String[] args) { try{ //使用域名创建对象 InetAddress inet1 = InetAddress.getByName("www.baidu.com"); System.out.println(inet1); //使用IP创建对象 InetAddress inet2 = InetAddress.getByName("127.0.0.1"); System.out.println(inet2); //获得本机地址对象 InetAddress inet3 = InetAddress.getLocalHost(); System.out.println(inet3); //获得对象中存储的域名 String host = inet3.getHostName(); System.out.println("域名:" + host); //获得对象中存储的IP String ip = inet3.getHostAddress(); System.out.println("IP:" + ip); }catch(Exception e){} }}
学习进度条
代码行数(新增/累积 | 博客量(累积/目标) | 学习时间 | 估算学习时间 | 实际学习时间 | 重要成长 | |
目标 | 5000行 | 30篇 | 400小时 | |||
第一周 | 150/150 | 2/2 | 15 | |||
第二周 | 500/650 | 3/4 | 15 | |||
第三周 | 500/1150 | 4/5 | 14 | |||
第四周 | 600/1750 | 5/6 | 15 | |||
第五周 | 500/2250 | 6/7 | 9 | 这周学得不咋样...... | ||
第六周 | 300/2350 | 7/8 | 10 | 学得还是不实,但是比上周好了一些 | ||
第七周 |
300/2650 这周写了300行左右的代码(包括实验), 有些代码是直接粘贴运行了一下看了下结果 |
10/10 |
8h~9h |
10h |
8h~9h |
这周的学习内容主要是时间、日期相关类的应用, 相对于前面几章简单了一些, 实际学习时间相比于估算学习时间少了一些, 看书所花的时间与估算差不多, 但是写代码、调试、进行实际操作应用, 学习java实验相关调试技巧、测试技巧的时间还是少了些,还是有点懒。 |
第八周 |
400/3050 |
12/12 |
8h |
9h |
8h |
java后面都是类的使用,不实际操作肯定是不许的,动手还是少了些, 纸上得来终觉浅,应该积极主动地去多敲代码 |
第九周 |
300/3350 |
14/14 |
11h |
10h |
11h |
数据库这块不怎么能理解,挺抽象的 |
第十周 |
200/3550 |
16/16 |
8h |
8h |
8h |
这周有关网络编程方面的学习内容,真正实现了客户端与服务器端交互的 一个功能 |
参考资料
20145311 《Java程序设计》第十周学习总结的更多相关文章
- 201521123027 <java程序设计>第十周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 异常: 多线程: 2.书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 ...
- Java程序设计第十周学习总结
Java课程知识梳理: 流的区分; 字符流与字节流的区别: 字节流是直接操作文件本身的,如果没有关闭字节流操作,文件会依然输出内容 而字符流在程序运行之后会发现文件没有任何的内容,这是因为字符流操作的 ...
- 20145311 《Java程序设计》第九周学习总结
20145311 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1JDBC 16.1.1JDBC简介 JDBC(Java DataBase Connec ...
- 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,顶点集和 ...
随机推荐
- Objective-c官方文档翻译 类的定义
类是对象的蓝图. 一个类是描述了对象的行为和属性.例如NSString的一个实例.他的类提供了各种的方法来转化和表示他的内部字符的表示. 每个类的实例都包含了这个类的属性和行为.例如每个NSSt ...
- The 70th problem,UVa10396 Vampire Numbers
今天看Thinking in Java看到一个吸血鬼数的问题,于是查找UVa里也有类似的问题就动手写了先是用Java写的,不过WA了两次,然后没有发现错误,又用c++写的还是不行.最后发现要排序去重. ...
- JZOJ.5329【NOIP2017模拟8.22】时间机器
Description
- Python - 3.6 学习二
Python 的高级特性 切片 对于指定索引范围取值的操作,Python提供了slice方法,类似于Excel中数据透视表的切片器. >>> L = ['Michael', 'Sar ...
- JS判断当前是否是IE浏览器,并返回时IE几?
原文参考: https://www.cnblogs.com/liuyanxia/p/5855760.html 具体代码示例: 这里返回的是:如果不是IE浏览器返回 -1 ,返回 7/8/9/10/11 ...
- MVC之Filter
过滤器的理解 Filter就是过滤器,在WebForm中,各种管道事件就是相当于过滤器,在MVC中,过滤器是单独的一种机制,分为方法过滤器和异常处理过滤器,方法过滤器实现的功能是在执行某一个请求得方法 ...
- Code Forces 652C Foe Pairs
C. Foe Pairs time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- 转!!java 堆栈内存 对象实例等查看
https://blog.csdn.net/fenglibing/article/details/6411999
- 深入理解flannel
1 概述 根据官网的描述,flannel是一个专为kubernetes定制的三层网络解决方案.它主要用于解决容器的跨主机通信问题.首先我们来简单看一下,它是如何工作的. 首先,flannel会利用Ku ...
- 创建WCF服务的过程
一.创建控制台WCF工程 1.创建一个控制台工程2.System.ServiceModel的引用3.可创建多个WCF服务,如:IService.cs和Service.cs 顺序:右键->添 ...