1. 本周学习总结

以你喜欢的方式(思维导图、OneNote或其他)归纳总结多网络相关内容。

2. 书面作业

Q1. 网络基础

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

答:从本地访问集美大学计算机学院网站的速度要快于从本地访问百度网站的速度。因为集美大学计算机学院网站的服务器地址在厦门,而百度网站的服务器地址在江苏省南京市。用户所在地距厦门近,距江苏远。

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

答:上面这条命令连接的是远程主机的端口号23.

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

答:屏幕上什么都看不到,返回的内容不是cec.jmu.edu.cn的主页内容。使用GET /index HTTP/1.0命令,返回计算机工程学院主页的源代码。

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

联网程序 端口
QQ 80
telnet 23
UCBrower 443
答:QQ占用了80端口,与"58.251.61.188"(广东省深圳市 腾讯公司联通节点),"36.250.8.154"(福建省 联通),"36.250.8.151"(福建省 联通),"210.34.129.218"(福建省厦门市 集美大学诚毅学院新校区)等远程IP交互,使用了TCP协议进行通信。

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

答:IP地址,端口,协议。

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

Q2. 编写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请求来获得数据。

2.4 启动网络调试助手,将其设置为TCP Server,并启动,如下图所示,尝试使用Client.java连接该TCP Server,使用该服务器向Client发送信息。(截图)



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

答:可以建立两个线程,一个线程实现服务器发送信息给Client,另一个线程实现Client发送信息给服务器。

2.6 选做:实现2.5

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

Q3. ServerSocket与TCP服务器

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







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













3.3 选做:图形界面的MenuServer

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

参考:EchoServer.java,ThreadedEchoServer.java (多线程服务器)

Q4. UDP服务器

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

参考:UDPServer.java

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

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

答:编写网络程序时应当选择字节流。
简单的文字聊天:服务器对客户端进行监听,当客户端连上服务器时,服务器与客户端分别建立两个流,客户端的输入流连接到服务器的输出流,服务器的输入流连接到另一客户端的输出流。

Q6. 代码阅读

阅读ServerAndThread目录中的源代码

6.1 运行该程序(截图)。简述这个程序的主要功能。



程序的主要功能是实现服务端与客户端之间的通信。

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

ClientChart: 设置客户端界面
ClientListener:监听客户端
ClientReadThread:客户端读取线程
MainThread:首先连接服务器,在监听到客户端连接后,把该客户端线程放到列表中,然后服务端读取线程。
ServerReadThread:当MainThread启动时,告诉客户端已经连上服务器了,服务端把收到的消息转发给所有的用户。
SeverActionListener: 监听服务端
ServerChart:设置服务端界面

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

不足之处:客户端无法分辨是自己发的消息还是服务端发的消息
改进方法:哪一端发送消息时就注明一下是哪一端。

选做:7. 网络爬虫

使用Socket、URL、正则表达式、流等编写一个网络爬虫可以将cec.jmu.edu.cn及其所包含链接上的所有网址的图片都下载下来,抓取深到不超过5。

选做:8. 简易搜索引擎(进阶)

8.1 写出设计思路即可。该搜索引擎包含几部分?里面核心的实现思路?如果能用框架图、流程图画出架构

8.2 以计算机学院网站为例,进行测试。比如,输入ACM后搜索,可以将包含ACM的的网页抽取出来。(可作为课程设计题目)

3. 码云

码云代码提交记录

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

201521123069 《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. 《Python学习手册》读书笔记【转载】

    转载:http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html 之前为了编写一个svm分词的程序而简单学了下Python,觉 ...

  2. python 在大文件里面删除某一行,比较有效率的方法

    用 python 处理一个文本时,想要删除其中中某一行,常规的思路是先把文件读入内存,在内存中修改后再写入源文件. 但如果要处理一个很大的文本,比如GB级别的文本时,这种方法不仅需要占用很大内存,而且 ...

  3. 纯JSP实现用户登录注册,记事本

    没有美化,没有格式,没有样式 1.JSP登陆注册 将用户注册的信息保存在application对象中,用于登录时的验证. 首页如下: 如果未登录,在  session 中找不到 currentUser ...

  4. 遇到local variable 'e' referenced before assignment这样的问题应该如何解决

    问题:程序报错:local variable 'e' referenced before assignment 解决:遇到这样的问题,说明你在声明变量e之前就已经对其进行了调用,定位到错误的地方,对变 ...

  5. 多重外键关系在java中的处理方案

    // 0){ var ul = li.getElementsByTagName("ul")[0]; ul.style.display = "none"; var ...

  6. 家中路由添加静态IP映射(一)

    登录路由器配置页面,选择更多功能来添加IP和MAC地址映射关系

  7. 【Ubuntu16.04】 install nginx

    1. Download PGP key in order to pass the authentication of the nginx repository signature. click to ...

  8. 利用GPU实现翻页效果

    0x00 前言 有一段时间没有更新博客了,在考虑写点什么的时候正好赶上了这个月我的书<Unity 3D脚本编程>又加印了.因此写篇小文聊聊利用shader来实现翻书的效果吧. 虽然本文是这 ...

  9. 史上最全前端面试题(含答案)-B篇

    面试有几点需要注意面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑.题目类型: 技术视野.项目细节.理论知识型题,算法题,开放性题,案例题.进行追问: 可以确保问到你开始不懂 ...

  10. MySQL使用聚合函数查询

    create table `t_grade` ( `id` int , `stuName` varchar (60), `course` varchar (60), `score` int ); in ...