1. 本周学习总结

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

2. 书面作业

1. 网络基础

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

答:



IP地址、时间、往返行程的估计时间不同;因为不同网站的主机是不一样的,每一台主机的IP地址都会不一样;时间不一样是因为jmu的主机距离我们比较近,花费的时间就比较少,而且我们用的是校园网,本地访问比访问外网更快更快;往返行程的估计时间也一样。

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。

答:

telnet cec.jmu.edu.cn 80从屏幕看到:

不是cec.jmu.edu.cn的主页内容;

GET /index HTTP/1.0命令返回主页的网页源代码。

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

答:



有QQ、GoogleUpdate等,QQ的远程IP是163.177.71.165,远程端口是80;GoogleUpdate的远程IP是74.125.204.101,远程端口是443;使用TCP传输控制协议。

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

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

答:需要IP地址和域名找到对方、端口号确定服务、TCP或UDP协议。

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进一步观察返回结果。没有任何返回结果,为什么?怎么操作

答:

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

尝试使用Client.java连接该TCP Server,使用该服务器向Client发送信息。(截图)

答:

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

答:

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、聊天室、网络游戏。

答:

6. 代码阅读

阅读ServerAndThread目录中的源代码

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

答:

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

答:

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

答:

3. 码云

码云代码提交记录

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

答:

4.课外阅读

4.1 Java Tutorial:Custom Networking

Trail: Custom Networking

主要看Overview of Networking,Working With URLs,All About Sockets,All About Datagrams

4.2 HTTP协议简介

4.3一个简单的小爬虫

Java编程技巧:小爬虫程序.docx

4.4 进阶:HTTPComponent的使用

使用java中的Socket、URL、URLConnection,然后遵循HTTP协议也可以编写一个小程序,和可以查询成绩的HTTP服务器进行交流。然而直接使用Socket编程较麻烦,这时候我们可以使用HTTPComponent。

HTTPComponent相比传统JDK自带的URLConnection,增加了易用性和灵活性

  1. 阅读HttpClient 教程,使用HTTPComponent编写一些与HTTP服务器交换的示例程序
  2. 选做:使用HTTPComponent开发一个查询成绩的程序:用户输入用户名、密码、验证码,即可自动查询教务处服务器,获取成绩。

    参考资料:用Java的HttpClient写一个简单的http请求和返回,HttpClient使用详解,HttpClient 教程, HTTP Client官网

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

  1. 201521123045 <java程序设计>第11周学习总结

    201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...

  2. 201521123027 <java程序设计>第11周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchro ...

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

    2018面向对象程序设计(Java)第11周学习指导及要求 (2018.11.8-2018.11.11)   学习目标 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: ...

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

    2019面向对象程序设计(Java)第11周学习指导及要求 (2019.11.8-2018.11.11)   学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接 ...

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

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

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

    <Java程序设计>第九周学习总结 主要内容 MySQL数据库管理系统 1.下载 2.安装 启动MySQL数据库服务器 1.启动 2.root用户 MySQL客户端管理工具 建立连接 建立 ...

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

    20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...

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

    20175208 2018-2019-2 <Java程序设计>第九周学习总结 一.教材学习内容总结: 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系 ...

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

    20175202 2018-2019-2 <Java程序设计>第九周学习总结 教材知识点总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称 ...

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

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

随机推荐

  1. 基于tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)

    基于tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的人工智能技术的发展 ...

  2. 【leetcode】260. Single Number III

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  3. 【javascript】详解javascript闭包 — 大家准备好瓜子,我要开始讲故事啦~~

    前言: 在这篇文章里,我将对那些在各种有关闭包的资料中频繁出现,但却又千篇一律,且暧昧模糊得让人难以理解的表述,做一次自己的解读.或者说是对“红宝书”的<函数表达式/闭包>的那一章节所写的 ...

  4. JQuery中的回调对象

    JQuery中的回调对象 回调对象(Callbacks object)模块是JQuery中的一个很基础的模块,很多其他的模块(比如Deferred.Ajax等)都依赖于Callbacks模块的实现.本 ...

  5. Orleans---持久化

    Orleans配置---持久化 这是Orleans系列文章中的一篇.首篇文章在此 Grain理想的生命周期应该如下图所示: 这就如美国电影中的大反派一样,死了再复活,死了再复活.当然如果复活的反派没有 ...

  6. css动画过渡

    css动画过渡css代码: .div03{ width:100px;height:100px;background: rebeccapurple;color: #fff; -webkit-transi ...

  7. 关于HttpSession

    HttpSession  使用Cookie有一个非常大的局限,就是如果Cookie很多,则无形的增加了客户端与服务端的数据传输量.而且由于浏览器对Cookie数量的限制,注定我们不能再Cookie中保 ...

  8. Vue列表过渡

    前面的话 本文将详细介绍Vue列表过渡 概述 前面分别介绍了单元素CSS过渡和JS过渡,以及多元素过渡.如何同时渲染整个列表呢?在这种情景中,需要使用<transition-group>组 ...

  9. 【Java学习笔记之二十八】深入了解Java8新特性

    前言: Java8 已经发布很久了,很多报道表明java8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 ...

  10. Redis笔记——技术点汇总

    目录 · 特点 · 安装 · 数据库 · 服务器命令 · 数据类型及其操作命令 · 数据结构 · string · list · set · hash · zset · 发布与订阅 · 排序 · 事务 ...