1. 本周学习总结

(1)网络中为了进行数据交换(通信)而建立的规则、标准或约定(=语义+语法+规则)称之为协议(常用http/ftp)
(2)大致熟悉了TCP协议,但是UDP怎么辣么蓝,好理解却用不起来 T_T
(3)好像多线程也不是很难的样子(对多线程的用法进一步熟悉)
(4)这次的作业做的我头昏脑涨、心力交瘁 [○・`Д´・ ○] (可能是上课没太认真听讲 ╮(╯﹏╰)╭)

2. 书面作业

1. 网络基础

1.1 比较ping www.baidu.comping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同?

应答的时间不同,ping www.baidu.com的应答时间较长,ping cec.jmu.edu.cn的较短,ping www.baidu.com的TTL(Time To Live)为51,其数据通过的路由器数为"64-51=13",而ping cec.jmu.edu.cn的TTL为61,其数据通过的路由器数为"64-61=3"。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。

1.2 telnet bbs.newsmth.net,上面这条命令连接的是远程主机的什么端口号?

23号端口(telnet后启动ConnectionWatcher看到的)

1.3 telnet cec.jmu.edu.cn 80,尝试回答:你从屏幕看到一些什么内容?返回的内容是不是cec.jmu.edu.cn的主页内容?尝试使用GET /index HTTP/1.0命令,会返回什么?详见实验任务书题目1。

从屏幕上看到cec.jmu.edu.cn主页内容,不过开始看不懂,想不明白为什么这么两行代码能显示辣么多的内容。当然,省却“打开回显、回车、GET/HTTP/1.0”什么也看不到。

使用"GET /index HTTP/1.0"会返回错误信息,“不被允许GET”

之后又试了一次,发现结果不一样,返回的是"404 Not Found"。

为嘛加了个index的GET命令会出现这种情况?后面又试了几次,“404 Not Found”!!!泪奔~~~

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

360浏览器(54652、51502、51512端口被使用)、搜狗输入法(54692端口)、QQ(51409、51410等端口)、360安全卫士(54696端口)等等连接了网络

QQ使用了如上一些端口,(根据使用的不同功能占用或释放端口,如开起对话框,也会占用本地端口)

交互的IP除了主服务器端(TCP协议,<更可靠>),还有客户端(UDP协议,<更快捷>)(好友之间的交互)等。

1.5 编写网络程序必不可少的几个信息是什么?

必要信息 协议 IP 域名 端口

参考:实验任务书-题目1

2. 编写TCP客户端程序

2.1 参照SocketTest.java编写一个简单的连接远程服务器小程序Client.java,可以接收并显示服务器发送的信息。启动时需要首先在控制台指定远程主机IP与端口号。(截图,出现自己学号)

2.2 将程序中的网址改成bbs.newsmth.net,端口号改为23,再次观察返回结果?尝试执行telnet bbs.newsmth.net 23,对比返回结果。



大致内容差不多,编码及格式支持的问题

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

因为我们连接的是cec.jmu.edu.cn:80的http服务,需要按照http协议来给服务器发送指令,比如调用

PrintWriter.println("GET / HTTP/1.0");

在2.1中已实现

2.4 启动网络调试助手,将其设置为TCP Server,并启动,如下图所示尝试使用Client.java连接该TCP Server,使用该服务器向Client发送信息。(截图)
2.5 回答:现在的Client.java只能接收信息,能否改造Client.java使其可以与服务器进行交互(服务器可以发送信息给Client,Client也可发送信息给服务器),写出大概思路即可。 (多线程)
2.6 选做:实现2.5
参考:实验任务书-题目2

3. ServerSocket与TCP服务器

3.1 简易单线程MenuServer,题目3.1-3.4。(关键代码及运行截图,包含学号)可以使用网络调试助手,将其设置为TCP Client(IP与端口填你的MenuServer的IP与端口),连接你的MenuServer。其中的文件搜索功能为选做。

3.2 多线程MenuServer(截图证明你这个是多线程服务器,使用telnet连接)。

4. UDP服务器

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

这星期补上

参考:UDPServer.java

5. 论述题:网络程序与流

5.1 前面编写的程序用到了大量的流的相关知识。简述,编写网络程序时应当选择什么样的流?Java网络编程、流之间的关系。场景如:简单的文字聊天、文件传输、应用层协议服务器,如QQ、聊天室、网络游戏。

socket的输入输出流是字节流,然后用字符流来包装。

比如简单的文字聊天:客户端1-->客户端2

客户端1发送消息后,服务器端“代为接收”,等到客户端2上线时再由服务器send,客户端2接收。

6. 代码阅读

先交了,再补补补

阅读ServerAndThread目录中的源代码

6.1 修改程序,在GUI界面中某个地方显示自己的学号,然后运行该程序(截图、出现学号)。简述这个程序的主要功能。

 answer:服务端开启端口,客户端建立连接,服务端与客户端互相通信

6.2 画出源代码的结构图(各个类的依赖关系)。并简要说明各个类的功能。

MainThread:启动服务端,监听客户端并加入线程列表

ServerChart:服务端图形界面

ClientChart:客户端图形界面

ServerReadThread:服务端收发显示数据

ClientReadThread:客户端收发显示数据

ServerActionListener:服务端监听器

ClientListener:客户端监听器

分别负责监听,ClientChart。

6.3 简述这个程序有什么不足之处及改进方法.

客户端消息发送存在问题,开两个客户端,当一个客户端发送消息给服务端时,另一个客户端会会显示与本客户端相同的信息

改进方法:为每个客户端添加ID属性,服务端识别响应

3. 码云

码云代码提交记录

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

201521123023《Java程序设计》第13周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第13周学习总结

    1.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2.书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.e ...

  2. 2018面向对象程序设计(Java)第13周学习指导及要求

    2018面向对象程序设计(Java)第13周学习指导及要求 (2018.11.22-2018.11.25)  学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作机 ...

  3. 面向对象程序设计(JAVA) 第13周学习指导及要求

    2019面向对象程序设计(Java)第13周学习指导及要求 (2019.11.19-2019.11.25)   学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作 ...

  4. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  5. 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结

    20162329 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 通过打书上的代码熟悉了Java编程的基本过程 教材学习中的问题和解决过程 1.因为我的虚拟机 ...

  6. 20175221 2018-2019-2 《Java程序设计》第一周学习总结

    20175221 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周通过观看书本配套视频,学到了如解释器,编译器等一些简单概念. 还懂得了java的一些简单 ...

  7. 20175317 《Java程序设计》第九周学习总结

    20175317 <Java程序设计>第九周学习总结 学前准备 首先下载XAMPP,下载完成后打开: 将前两个选项打开 在IDEA中配置驱动mysql-connector-java-5.1 ...

  8. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  9. 20175126《Java程序设计》第九周学习总结

    # 20175126 2016-2017-2 <Java程序设计>第九周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第十一章,本章 ...

  10. 20175234 2018-2019-2 《Java程序设计》第九周学习总结

    目录 20175234 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码托管 感想 学习进度条 参考资料 20175234 2 ...

随机推荐

  1. Oracle dba_tablespace_usage_metrics 视图 查看表空间 说明

    一.DBA_TABLESPACE_USAGE_METRICS 视图的理论说明   群里一朋友说使用dba_tablespace_usage_metrics 视图查看表空间的结果不正确,如下:     ...

  2. mac系统读写NTFS格式的移动硬盘

    Mac OS X默认情况下,对于NTFS的移动硬盘只能读不能写,可通过将移动硬盘格式化为exFAT 或者安装NTFS相关的工具,达到可读写的目的,但对于系统的安全性方面,以上方式得不到保证:在Mac ...

  3. JavaScript入门(二)

    一.JS中的运算符 1.算术运算(单目运算符) + 加.-减.*乘. /除. %取余.++自增运算符 .--自减运算符; >>>+:有两种作用,链接字符串/加法运算符.当+两边全为数 ...

  4. Java静态绑定与动态绑定

    程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来.对java来说,绑定分为静态绑定和动态绑定:或者叫做前期绑定和后期绑定. 静态绑定: 在程序执行前方法已经被绑定(也就是说 ...

  5. asp.net core MVC 全局过滤器之ExceptionFilter异常过滤器(一)

    本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter异常过滤器(一) asp.net cor ...

  6. 【Win10】正常上网但ping不通外网

    使用360免费wifi连接了热点后,发现无法ping外网,仅能ping网关,浏览器正常访问 后来,换了wifi共享大师,也是不行.同样ping不到外网,浏览器正常访问 但是 wifi 共享大师有个功能 ...

  7. Jquery Mobile笔记之一

    jQuery Mobile 在你的网页中添加 jQuery Mobile 你可以通过以下几种方式将jQuery Mobile添加到你的网页中: 从 CDN 中加载 jQuery Mobile (推荐) ...

  8. Django编写RESTful API(三):基于类的视图

    欢迎访问我的个人网站:www.comingnext.cn 前言 在上一篇文章中,主要讲的是请求和响应,项目里面views.py中的视图函数都是基于函数的,并且我们介绍了@api_view这个很有用的装 ...

  9. [2017-07-18]logstash配置示例

    提醒 /etc/logstash/conf.d/下虽然可以有多个conf文件,但是Logstash执行时,实际上只有一个pipeline,它会将/etc/logstash/conf.d/下的所有con ...

  10. 最近完成的AndroidStudio项目实现思路及应用技术

    主要内容: Android Studio的介绍 AS中个Gradle及Groovy介绍 AS中的依赖管理 Maven以及Nexus私库管理依赖 Gradle对变种代码的管理以及多渠道打包 eclips ...