201521123082 《Java程序设计》第13周学习总结
201521123082 《Java程序设计》第13周学习总结
标签(空格分隔): java
1. 本周学习总结
以你喜欢的方式(思维导图、OneNote或其他)归纳总结多网络相关内容。
Answer:
基本框架:

2. 书面作业
1. 网络基础(参考:实验任务书-题目1)
1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同?
Answer:
结果分别如下:


分析:
1.回复的地址不同:


2.回复时间不同:
在集美离厦门市的服务器的距离近,所以回复的时间比较快。百度的服务器在广州,所以回复时间比较慢。
3.www.a.shifen.com和jmuweb2.jmu.edu.cn
打开地址结果分别如下:

为什么打不开百度?
这涉及cname解析和DNS解析的内容。
给个问题回答链接:十分系统(www.a.shifen.com)是干什么的?和百度有什么关系?

根本不是我们学院的主页,这是为什么?
cec.jmu.edu.cn和jmuweb2.jmu.edu.cn使用的同一台主机210.34.128.152。
1.2 telnet bbs.newsmth.net,上面这条命令连接的是远程主机的什么端口号?
Answer:
这个是常识。telnet的端口号就是23。
如果不知道的话,可以尝试在命令提示符窗口用netstat命令查询。
1.3 telnet cec.jmu.edu.cn 80,尝试回答:你从屏幕看到的是一些什么内容?返回的内容是不是cec.jmu.edu.cn的主页内容?尝试使用GET /index HTTP/1.0命令,会返回什么?见实验任务书题目1
Answer:
1.telnet cec.jmu.edu.cn 80 后无任何返回结果;
2.GET /index HTTP/1.0命令,得到结果如下:

1.4 启动ConnectionWatcher, 然后启动若干个可以联网的程序(如QQ, telnet,浏览器等),查看本机上有什么程序联网,使用了什么端口?QQ占用了什么端口和那些远程IP进行交互,这些IP分布地在那里?使用了什么协议进行通信?
Answer:
部分截图如下:

1.其实不论是QQ还是其他的一些软件,都用443(https)、80(http)端口与远程IP交互。
2.QQIP分布在哪里,查询如下:

3.使用了TCP协议
1.5 编写网络程序必不可少的几个信息是什么?
参考:实验任务书-题目1
Socket;域名;输入与输出流;TCP和UDP协议;
2. TCP客户端程序编写(参考:实验任务书-题目2)
2.1 参照SocketTest.java编写一个简单的连接远程服务器小程序Client.java,启动时需要首先在控制台指定远程主机IP与端口号。(截图,出现自己学号)
Answer:

要控制台输入,好吧,在下面:

2.2 将程序中的网址改成bbs.newsmth.net,端口号改为23,再次观察返回结果?尝试使用telnet bbs.newsmth.net 23。对比返回结果
Answer:
显示内容其实是一样的,如下:


2.3 将程序中的网址改成cec.jmu.edu.cn,端口号改为80进一步观察返回结果。没有任何返回结果,为什么?
Answer:
没有任何返回结果。

改进后:
//没有发送Get获得网站文档,所以改进代码如下:
pw.println("GET / HTTP/1.0");
pw.println("");

2.4 启动网络调试助手,将其设置为TCP Server,并启动,如下图所示

尝试使用Client.java连接该TCP Server,并发送信息。
回答:现在的Client.java只能发送信息或者接收信息,能否改造Client.java使其可以与服务器进行交互(服务器可以发送信息给Client,Client也可发送信息给服务器),写出大概思路即可。
Answer:
如题目一一样。

2.5、2.6 回答:现在的Client.java只能接收信息,能否改造Client.java使其可以与服务器进行交互(服务器可以发送信息给Client,Client也可发送信息给服务器),写出大概思路即可。
Answer:

3. ServerSocket与TCP服务器
参考:实验任务书-题目3
参考:EchoServer.java,ThreadedEchoServer.java (多线程服务器)
3.1 简易单线程MenuServer,题目3.1-3.4。(关键代码及运行截图,包含学号)可以使用网络调试助手,将其设置为TCP Client(IP与端口填你的MenuServer的IP与端口),连接你的MenuServer。其中的文件搜索功能为选做?
Answer:
主界面:

查询时间:

查询IP:

退出:

4. UDP服务器
4.1 改造3.1或3.2,将其改造成基于UDP的MenuServer。(运行界面代码截图,包含学号)。可以使用网络调试助手,将其设置为UDP,要填本机IP与端口也要填远程服务器的IP与端口。
(参考:UDPServer.java)
Answer:
主界面和操作1:

操作2:

操作4(退出):

5. 论述题:网络程序与流
5.1 前面编写的程序用到了大量的流的相关知识。简述,编写网络程序时应当选择什么样的流?场景如:简单的文字聊天、文件传输、应用层协议服务器,如QQ、聊天室、网络游戏。
Answer:
编写网络程序涉及到了输入流和输出流。QQ、聊天室、网络游戏收发数据选择字符流,达到服务器与客户端的通信。
6. 代码阅读
阅读ServerAndThread目录中的源代码
6.1 运行该程序(截图)。简述这个程序的主要功能。
Answer:
功能:实现客户端与服务端之间的通信。

6.2 画出源代码的结构图(各个类的依赖关系)。并简要说明各个类的功能。
Answer:
| ClientChart | ClientListener | ClientReadThread |
|---|---|---|
| 设置客户端界面 | 客户端的监听器 | 客户端读取线程 |
| ServerChart | ServerReadThread | SeverActionListener |
| 设置服务端界面 | 服务端读取线程 | 服务端的监听器 |
6.3 简述这个程序有什么不足之处及改进方法.
Answer:
如图客户端无法辨别哪个是自己还是服务器发送的信息。而服务端的输出格式不美观。

3. 码云
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
Answer:

4.课外阅读
4.1 Java Tutorial:Custom Networking
Trail: Custom Networking
主要看Overview of Networking,Working With URLs,All About Sockets,All About Datagrams
Answer:
Overview of Networking:
网络的概述有两个部分。第一部分描述java平台的网络功能,介绍了applet和从url加载图片的内容。第二部分介绍网络基础知识,了解TCP与UDP的不同(TCP:是一个面向连接的协议,它提供了一个可靠的两台计算机之间的数据流;UDP:是一种协议,独立数据包发送的数据,称为数据报,从一台计算机到另一个没有担保的到来),了解了端口。
在互联网上互相交流使用传输控制协议(TCP)和用户数据报协议(UDP)的关系图如下:

Working With URLs:
基本概念:可以使用URL来访问互联网上的信息,一个URL(统一资源定位器)是资源在互联网上的地址。
文章思路:网址是什么——>创建URL——>解析URL——>用BufferedReader直接从URL读取——>连接URL——>读入和写入URLConnection
All About Sockets:
介绍了套结字。套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。
读取和写入套接字的源码:
String hostName = args[0];
int portNumber = Integer.parseInt(args[1]);
try (
Socket echoSocket = new Socket(hostName, portNumber);
PrintWriter out =
new PrintWriter(echoSocket.getOutputStream(), true);
BufferedReader in =
new BufferedReader(
new InputStreamReader(echoSocket.getInputStream()));
BufferedReader stdIn =
new BufferedReader(
new InputStreamReader(System.in))
)
后面还有编写一个客户端/服务器的介绍。
All About Datagrams:
数据包简介:一个自我完备的独立资料实体,携带着足够的资讯,它能够从源头,选取路径,最终到达目的电脑,而不用依赖起始电脑、目的电脑以及传输网络预先交换的资讯。
后面还讲解了如何写一个数据的客户端和服务器,最后讲怎么广播到各个接受者。
4.2 HTTP协议简介
Answer:
廖雪峰网站上的只是http协议的简介,想深入了解可以阅读《HTTP权威指南》。如果觉得权威指南生涩,可以看我之前看过的是图解HTTP,加上火狐的几个插件,去操作然后分析就好了。

当然用Google浏览器直接按F12启动开发者工具去学习也不错。

4.3 其他阅读资料
Java编程技巧:小爬虫程序.docx
Answer:
作者的思路:
1. 把所有想要的商品的链接读到程序中。
2. 分别打开每一个链接读取源代码
3. 验证是否是金子商品(源代码中含有free_msg字符串)
4. 如果是金子就把该链接用IE打开
代码主体就是URL类实现获得链接和链接上的输出流,Digger类实现判断是否为金子,然后打开链接。
4.4 进阶:HTTPComponent的使用
使用java中的Socket、URL、URLConnection,然后遵循HTTP协议也可以编写一个小程序,和可以查询成绩的HTTP服务器进行交流。然而直接使用Socket编程较麻烦,这时候我们可以使用HTTPComponent。
HTTPComponent相比传统JDK自带的URLConnection,增加了易用性和灵活性
1: 阅读HttpClient 教程,使用HTTPComponent编写一些与HTTP服务器交换的示例程序
Answer:
工欲善其事,必先利其器。先留下个学习网站:HttpClient 教程
201521123082 《Java程序设计》第13周学习总结的更多相关文章
- 201521123027 <java程序设计>第13周学习总结
1.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2.书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.e ...
- 2018面向对象程序设计(Java)第13周学习指导及要求
2018面向对象程序设计(Java)第13周学习指导及要求 (2018.11.22-2018.11.25) 学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作机 ...
- 面向对象程序设计(JAVA) 第13周学习指导及要求
2019面向对象程序设计(Java)第13周学习指导及要求 (2019.11.19-2019.11.25) 学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结
20162329 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 通过打书上的代码熟悉了Java编程的基本过程 教材学习中的问题和解决过程 1.因为我的虚拟机 ...
- 20175221 2018-2019-2 《Java程序设计》第一周学习总结
20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...
- 20175317 《Java程序设计》第九周学习总结
20175317 <Java程序设计>第九周学习总结 学前准备 首先下载XAMPP,下载完成后打开: 将前两个选项打开 在IDEA中配置驱动mysql-connector-java-5.1 ...
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20175126《Java程序设计》第九周学习总结
# 20175126 2016-2017-2 <Java程序设计>第九周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第十一章,本章 ...
- 20175234 2018-2019-2 《Java程序设计》第九周学习总结
目录 20175234 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码托管 感想 学习进度条 参考资料 20175234 2 ...
随机推荐
- 实现wpf的值转换器
从数据库取出来的数据是1,2,3,4,5,不过要显示在控件上的,是1,2,3,4,5对应的string值,怎么办?wpf提供了很好的实现方法,那就是值转换器,我们需要做的是: 1.定义值转换类,继承I ...
- 轻松学JVM(一)——基本原理
前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则jvm则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解jvm必要的知识点. 运行流程 我们都 ...
- PL/SQL 编程(一)基础,变量,分支,循环,异常
SQL和PL/SQL: SQL 结构化查询语言(Structural Query Language),是用来访问和操作关系型数据库的一种标准通用语言,属于第四代语言(4GL).可以方便的调用相应语句来 ...
- JS网页特效操作流程——下拉菜单列表与登录注册弹窗效果
下拉菜单列表 <style> *{ margin: 0px; padding: 0px; } .men ...
- MYSQL数据库相关操作---读书笔记分享
===================数据库软件: <DBMS,DataBase Management System >数据库: 保存特定类型数据的容器<DB,database> ...
- Ext.NET加入自定义验证JS函数
ExtJS验证很方便,在使用FormPanel的时候,我们可以很方便的进行验证.比如设置必填项.正则.字段类型等等.比如如下所示: 上面的验证是这么写的: 1 2 3 <Listeners> ...
- vs2010等宽字体设置
VS2010自带的字体非等宽,不同行的代码采用同样的缩进空格时,可能左侧未对齐. 这个里有一款字体很帮,字体名字叫Fixedsys Excelsior 3.01,下载地址:http://www.fix ...
- 关于《Unity3D/2D游戏开发从0到1》书籍再版说明
关于<Unity3D/2D游戏开发从0到1>第一版本在2015年7月1日全国发行,累计得到不少国内高校教师.培训机构的好评.但是由于Unity官方对于技术不断的升级与版本的快速迭代,基于U ...
- 2017-04-21周Java学习笔记
2017-04-21-周Java学习笔记... -------------------------------------- 计算机起源于:战争中的炮弹轨道计算.Unix操作系统是使用C语言编写的操作 ...
- javaweb中的关于编码问题总结
1.pageEncoding="utf-8" 设置JSP编译成Servlet时使用的编码 2.Contenttype="text/html;charset=utf-8&q ...