当前位置: 首页 > 编程日记 > 正文

201521123013 《Java程序设计》第13周学习总结

1. 本周学习总结

1109703-20170519225518072-1179952660.png

2. 书面作业

Q1. 网络基础

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

1109703-20170519230205135-548696463.png1109703-20170519230215400-733249834.png

  • ping值不同(time列),cec.jmu.edu.cn的ping值比较小。
  • ping值:从本地电脑发一个数据包,传输到服务器,然后服务器返回本地电脑的总时间。因为cec.jmu.edu.cn的服务器离本机距离比较近,所以数据请求发送过去,再回来的时间就比较小,也就是ping值比较小。

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命令,返回的是cec.jmu.edu.cn的主页源代码
    1109703-20170520111355619-81310946.png

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

1109703-20170520112220244-1483305882.png
1109703-20170520113108432-1492572527.png
1109703-20170520113225025-520223062.png

  • 酷狗、IE、QQ、360,使用了80端口、49329端口等等。使用了80端口跟远程IP进行交互,使用了TCP协议。

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

  • 套接字(Socket)、输入输出流(incoming.getInputStream(),getOutputStream())、TCP、UDP协议

Q2. 编写TCP客户端程序

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

1109703-20170519232828103-1705528220.png

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

1109703-20170519233221822-1259998885.png
1109703-20170519233443385-700950967.png

  • 因为eclipse编码问题,有些字符无法正常显示。

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

  • 因为客户端跟服务器(cec.jmu.edu.cn)是通过http协议进行交互的,所以需要使用GET命令请求消息。如果使用Socket的话,必须自己发送http请求,out.println("GET / HTTP/1.0\n")也可以使用URL类,因为URL类可以直接跟Web服务器进行交互(里面封装了使用http协议通信的代码),使用比较方便。
    1109703-20170520122455072-1616479269.png
    1109703-20170520122505478-1201943878.png

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

1109703-20170519232905650-1953715643.png

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

1109703-20170519235107025-798977423.png
1109703-20170519235113150-156423086.png

Q3. ServerSocket与TCP服务器

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

1109703-20170520015828291-1379178189.png
1109703-20170520015836510-330097570.png
1109703-20170520015843119-747969415.png

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

1109703-20170520015029025-1050285650.png

3.3 选做:图形界面的MenuServer

Q4. UDP服务器

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

•参考:UDPServer.java
1109703-20170520100517916-1068153913.png

1109703-20170520100527713-730759745.png

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

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

  • 编写网络程序时选择输入输出流的字节流,然后用字符流包装。客户端和服务器进行通信,实际上就是对Socket对象中获得的流进行操作。对程序来讲,输出到屏幕,打印机,文件等都叫输出,而从文件读取,从网络读取,接收到都算输入。

Q6. 代码阅读

阅读ServerAndThread目录中的源代码

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

1109703-20170521130331385-163825934.png

  • 功能:一台服务与多台客户端之间的通信。

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

1109703-20170520124753650-1917438509.png

  • ClientChart:客户端界面,ClientReadThread:读取客户端消息,ClientListener:监听器,监听客户端收到的消息。
  • 服务端与客户端类似。

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

  • 不足:客户端发消息时,服务端知道是哪个线程发的消息,但是客户端之间显示只显示“客户端说:”,不能区分各客户端。
    1109703-20170521142909119-305708296.png

选做:7. 网络爬虫

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

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

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

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

3. 码云

码云代码提交记录

1109703-20170521142720510-1477773178.png

转载于:https://www.cnblogs.com/xygeqian/p/6875736.html

相关文章:

React 事件 4

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 将参数传递给事件处理程序 在循环内部&#xff0c;通常需要将额外的参数传递给事件处理程序。例如&#xff0c;如果id是行ID&#xff0c;则以下任何一个都可以工作&#xff1a; <button onClick{(e…

border-radius

周知&#xff1a;OPPO R819T Android 4.2.1和红米某些机型上&#xff0c;webview中&#xff0c;如果一个元素定义了 border border-radius&#xff0c;这时如果该元素有背景&#xff0c;那么背景将会溢出圆角之外&#xff0c;Yo新增了一个方法来fix这个问题&#xff0c;大家之…

javascript调试_如何提高JavaScript调试技能

javascript调试Almost all software developers who have written even a few lines of code for the Web have had at least a quick glance at JavaScript. After all, it is currently one of the most in-demand programming languages.几乎所有甚至为Web编写了几行代码的软…

Java transient

原文出自&#xff1a;http://www.importnew.com/21517.html 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口&#xff0c;这个对象就可以被序列化&#xff0c;java的这种序列化模式为开发者提供了很多便利&#xff0c;我们可以不必关系具体序列化的…

KBMMW 的日志管理器

kbmmw 4.82 最大的新特性就是增加了 日志管理器。 新的日志管理器实现了不同类型的日志、断言、异常处理、计时等功能。 首先。引用kbmMWLog.pas 单元后&#xff0c;系统就默认生成一个IkbmMWLog 实例&#xff1a; Log:IkbmMWLog; log 默认使用对应操作系统的日志功能。 为了能…

React 循环渲染 5

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 使用循环渲染的demo&#xff1a; const todoItems todos.map((todo) ><li key{todo.id}>{todo.text}</li> ); const todoItems todos.map((todo, index) >// Only do this if item…

面试时与人事交谈时间_如何与您的技术负责人交谈并解决通讯故障

面试时与人事交谈时间by Greg Sabo由格雷格萨博(Greg Sabo) 如何与您的技术负责人交谈并解决通讯故障 (How to talk to your tech lead and fix your communication glitches) Here’s where you messed up.这是你搞砸的地方。 Your tech lead told you to build out a new A…

inotify简介

一、inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统&#xff08;API&#xff09;&#xff0c;它提供了一种监控文件系统&#xff08;基于inode的&#xff09;事件的机制&#xff0c;可以监控文件系统的变化如文件修改、新增、删除等&#xff0c;并…

链路层寻址与 ARP

一、 MAC 地址 不是主机或路由器具有链路层地址&#xff0c;而是它们的适配器&#xff08;即网络接口&#xff09;具有链路层地址。因此&#xff0c;具有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址。 然而&#xff0c;链路层交换机并不具有与它们接口相关联的…

React 开始制作 6

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 从模拟开始 第1步&#xff1a;将UI分解为组件层次结构 不同的颜色为不同的组件&#xff0c; 第2步&#xff1a;在React中构建静态版本 第3步&#xff1a;确定UI状态的最小&#xff08;但完整&#xff…

php 空间类元素引入_引入单元素模式

php 空间类元素引入by Diego Haz迭戈哈兹(Diego Haz) 引入单元素模式 (Introducing the Single Element Pattern) 使用React和其他基于组件的库创建可靠的构建基块的规则和最佳实践。 (Rules and best practices for creating reliable building blocks with React and other …

Tcl学习之--列表|字典

【列表|字典】Tcl使用列表来处理各种集合&#xff0c;比方一个目录中的全部文件&#xff0c;以及一个组件的全部选项。最简单的列表就是包括由随意个空格、制表符、换行符、分隔的随意多个元素的字符串。比方: JerryAlice Mandy David l lindex命令: --> 获取元素 至少须要…

JAVA代码实现下载单个文件,和下载打包文件

//下载单个文件调用方法 /** * response * imgPath 下载图片地址 * fileName 保存下载文件名称 * date 2015年4月14日 下午5:53:24 */ public static void download(HttpServletResponse response,String imgPath,String fileName){ OutputStrea…

php读取本地xlsx格式文件的数据并按json格式返回

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 目的&#xff1a;php读取并操作本地xlsx格式的文件&#xff1b; 完整示例代码&#xff1a; 代码讲解&#xff1a;前端发起post网络请求&#xff0c;php接收一个name&#xff08;姓名&#xff09;的参数…

面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念

面向对象编程概念by Alexander Petkov通过亚历山大佩特科夫(Alexander Petkov) Have you noticed how the same cliche questions always get asked at job interviews — over and over again?您是否注意到在求职面试中总是一遍又一遍地问同样的陈词滥调问题&#xff1f; I…

jQuery 属性

jQuery 属性 方法描述context在版本 1.10 中被废弃。包含被传递到 jQuery 的原始上下文jquery包含 jQuery 的版本号jQuery.fx.interval改变以毫秒计的动画运行速率jQuery.fx.off对所有动画进行全局禁用或启用jQuery.support包含表示不同浏览器特性或漏洞的属性集&#xff08;主…

mongodb的几种启动方法

1 mongodb的几种启动方法 启动Mongodb服务有两种方式&#xff0c;前台启动或者Daemon方式启动&#xff0c;前者启动会需要保持当前Session不能被关闭&#xff0c;后者可以作为系统的fork进程执行&#xff0c;下文中的path是mongodb部署的实际地址。1. 最简单的启动方式&#xf…

php 修改数据库表的字段的值

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 php 前端传递参数&#xff0c;遍历数据库表的字段后根据条件进行修改。 <?phpheader("Content-Type:text/html;charsetutf8"); header("Access-Control-Allow-Origin: *"); //解…

如何开始使用PostgreSQL

by Akul Tomar通过Akul Tomar 如何开始使用PostgreSQL (How to get started with PostgreSQL) PostgreSQL is an open source Relational Database Management System (RDBMS). In this article, I’ll provide an introduction to getting started with PostgreSQL. Here is …

Java中数组常见的几种排序方法!

数组的定义&#xff1a; int[] arr new int[5];int[] arr1 {1,2,3,4,5};long[] arr2 new long[6];String[] strs new String[5];Person[] ps new Person[5]; 数组的操作&#xff1a; int[] arr {45, 34, 53, 43};Arrays.sort(arr);System.out.println(Arrays.toString(ar…

oracle 如何预估将要创建的索引的大小

一.1 oracle 如何预估将要创建的索引的大小 oracle 提供了2种可以预估将要创建的索引大小的办法&#xff1a; ① 利用包 Dbms_space.create_index_cost 直接得到 ② 利用11g新特性 Note raised when explain plan for create index 下边分别举例说明。 一.2 环境说明 [ora…

删除对象的某个属性

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 实现代码&#xff1a; var data {a:1,b:2,c:3}for(var item in data){if (item b) {delete data[item];} }console.log(data:, data) 打印结果&#xff1a; data: {a: 1, c: 3}

java 学到什么实习_我如何获得外展实习机会以及到目前为止所学到的知识

java 学到什么实习by Nguedia Adele由Nguedia Adele 我如何获得外展实习机会以及到目前为止所学到的知识 (How I got my Outreachy internship and what I’ve learned so far) I recently got accepted for an Outreachy internship, working with LibreHealth.我最近接受了与…

STM32F103C8开发板原理图和管脚图

转载于:https://www.cnblogs.com/libra13179/p/6894335.html

js实用数组方法

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 判断是否为数组 1. Array.isArray([]) 2. var arr[1,2] arr instanceof Array -->true arr instanceof String -->false map ---- 返回数组得出的结果 const filtered [1, 2,…

BasicModal - 简单易用的现代 Web App 弹窗

BasicModal 是为现代 Web 应用程序打造的弹窗系统。它包括所有你需要显示的信息&#xff0c;问题或接收用户的输入。这里的弹窗还可以链接起来&#xff0c;所以你可以很容易地建立一个预定义顺序的安装帮助或显示对话框。无效输入可以使用包含突出显示和处理功能。 在线演示 …

javascript选择器_如何通过选择正确JavaScript选择器来避免沮丧

javascript选择器选择器如何影响代码的快速指南 (A quick guide on how selectors affect your code) While working on a project, I ran into an issue in my code. I was attempting to define multiple HTML elements into a collection and then change those elements ba…

Asp.net中GridView使用详解(引)【转】

Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中&#xff0c;编辑&#xff0c;取消&#xff0c;删除 GridView正反双向排序 GridView和下拉菜单DropDownList结合 GridView和CheckBox结合 鼠标移到GridView某一行时改变该行的背景色方法一 鼠标移到GridView…

《任正非:我若贪生怕死,何来让你们英勇奋斗》

非常高兴尼泊尔代表处的进步&#xff0c;你们的一个历史项目概算亏损&#xff0c;从大前年亏损2.7亿美金&#xff0c;到前年亏损3000万美金&#xff0c;到去年盈利2140万美金。在喜马拉雅南麓一路爬坡&#xff0c;辛苦了。听说去年你们都涨了工资&#xff0c;我十分高兴。巴西代…

个人使用微信支付

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 首先在PAYJS申请到商户号和密钥&#xff0c; 然后实现源码如下&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>…