201621123001 《Java程序设计》第13周学习总结
1. 本周学习总结
以你喜欢的方式(思维导图、OneNote或其他)归纳总结多网络相关内容。
- 通过IP地址和端口号可以进行建立Socket对象,然后进行通信
- 使用Socket的一般步骤:
- 建立Socket对象(与远程主机进行了连接)
- 从Socket对象上获取流
- 对流进行操作就相当于进行网络通信
- Socket对象是资源,用完记得关闭
- 服务器端首先要监听一个端口,ServerSocket不是Socket,但是可以通过accept方法监听端口产生Socket对象。
- TCP与UDP的差别
- TCP:有连接,可靠性高,像打电话,通信前必须建立连接。
- UDP:无连接,发送简单,像发邮件,可靠性不高,可能丢失数据包
- 网络常用命令
- ipconfig 查看网络配置信息,如ip地址
- ping 测试网络是否连通
- telnet 远程登陆
- ftp 登陆ftp
- Fport (xp下)查看计算机端口使用情况
- URL是统一资源定位符,可以打开一个到达资源的流,组成(协议,主机名,文件名)
2. 为你的系统增加网络功能(购物车、图书馆管理、斗地主等)-分组完成
为了让你的系统可以被多个用户通过网络同时使用,需要为你的系统增加网络功能。
2.1 简述你想为你的系统增加什么网络功能?设计思路是什么?
Answer:这次我想为我的购物车系统增加多个客户端可以同时连接同一个服务端查看购物车的操作。
- 设计思路:在服务端定义一个ServerSocket监听在端口上 ,每接收到一个Socket就建立一个新的线程来处理它。在客户端定义好要连接的服务端IP地址和与服务端对应的监听端口号。建立连接后就可以从服务端读信息操作。
2.2 系统通过网络传递了什么信息?信息的格式是什么?
Answer:向服务端传递了用户的登录信息,向客户端传递了购物车货品。
2.3 你的网络模块使用了TCP还是UDP技术?模块中的常用类是什么?
Answer:TCP,常用Socket类。
2.4 截图网络通讯部分的源代码与运行截图,并进行简单说明。
Answer:
服务端(定义一个ServerSocket在端口8000上监听 )

运行截图



简单说明:客户端与服务端建立连接后就可以往服务端写入登陆信息,服务端向客户端传送信息。
2.5 选做:使用自己编写的客户端访问系统。简述里面的核心代码。
客户端1(客户端2相同)

核心代码:使用
Socket socket = new Socket(host, port);建立连接。
3. 码云与PTA
3.1 统计本周完成的代码量
需要将每周的代码统计情况融合到一张表中。
| 周次 | 总代码量 | 新增代码量 | 总文件数 | 新增文件数 |
|---|---|---|---|---|
| 1 | 374 | 374 | 5 | 5 |
| 2 | 889 | 515 | 15 | 10 |
| 3 | 1417 | 528 | 22 | 7 |
| 4 | 1838 | 421 | 27 | 5 |
| 6 | 2608 | 770 | 38 | 11 |
| 7 | 3270 | 662 | 48 | 10 |
| 8 | 4068 | 798 | 52 | 4 |
| 9 | 4543 | 475 | 60 | 8 |
| 10 | 4988 | 445 | 65 | 5 |
| 11 | 5421 | 433 | 72 | 7 |
| 12 | 6327 | 906 | 88 | 16 |
| 13 | 6737 | 410 | 96 | 7 |
| 14 | 7406 | 669 | 105 | 9 |
选做:4. 网络学习指导(以下作业内容均为选做)
1. 网络基础
1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同?
- 第一张图我在虚拟机上ping的,后两张为我在Mac上ping的- .-随便看看



Answer: 由图中可以发现,访问接收的时长不一样,访问百度的耗时比较长,是和距离有关系。
1.2 telnet bbs.newsmth.net,上面这条命令连接的是远程主机的什么端口号?
Answer: 23,telnet的默认端口号为23
1.3 telnet cec.jmu.edu.cn 80,尝试回答:你从屏幕看到一些什么内容?返回的内容是不是cec.jmu.edu.cn的主页内容?尝试使用GET /index HTTP/1.0命令,会返回什么?详见实验任务书题目1。
Answer:屏幕是没有内容的。
如图:

使用命令后,返回了文本数据

1.5 编写网络程序必不可少的几个信息是什么?
Answer: Ip地址,端口号,协议以及域名。
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进一步观察返回结果。没有任何返回结果,为什么?怎么修改代码才能正常显示?选做:为什么会返回乱码?如何解决?
Answer:因为cec.jmu.edu.cn连接的是http,需要添加"GET / HTTP/1.0\n"

- 这里没有产生乱码,由截图右下角可以看到就是使用UTF-8
2.4 启动网络调试助手,将其设置为TCP Server,并启动,如下图所示(作业中不要出现下图)
尝试使用Client.java连接该TCP Server,使用该服务器向Client发送信息。(截图关键代码与运行结果)
Answer:本题截图在2.1
5. 论述题:网络程序与流
5.1 前面编写的程序用到了大量的流的相关知识。简述,编写网络程序时应当选择什么样的流?Java网络编程、流之间的关系。任选一场景描述,场景如:简单的文字聊天、文件传输、应用层协议服务器,如QQ、聊天室、网络游戏。
Answer:简单的文字聊天可以使用输入流和输出流字节流以及字符流。
6. 代码阅读
阅读ServerAndThread目录中的源代码
6.1 修改程序,在GUI界面中某个地方显示自己的学号,然后运行该程序(截图、出现学号)。简述这个程序的主要功能。

Answer:该程序实现了客户端和服务端的通信
6.2 画出源代码的结构图(各个类的依赖关系)。

201621123001 《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 ...
随机推荐
- Python实现Plugin(插件化开发)
https://www.cnblogs.com/terencezhou/p/10276167.html
- English trip V1 - 20.Look at me 看着我 Teacher:Solo Key: 声调(英语默认就声调[rising]和降调[falling]两种)
In this lesson you will learn to describe a person. 课上内容(Lesson) appearance -> ap pea ran ce 外貌 ...
- C# 测试代码段性能耗时
一: DateTime BeginTime = System.DateTime.Now; //代码 DateTime EndTi ...
- 20181014xlVBA获取小题零分名单
Sub GetZeroName() Dim Dic As Object Const SUBJECT = "科目名称" Dim Key As String Dim OneKey Di ...
- 进程状态TASK_UNINTERRUPTIBLE
进程拥有以下几种状态:就绪/运行状态.等待状态(可以被中断打断).等待状态(不可以被中断打断).停止状态和僵死状态. TASK_RUNNING: 正在运行或处于就绪状态:就绪状态是指进程申请到了CPU ...
- How-to: Use HBase Bulk Loading, and Why
How-to: Use HBase Bulk Loading, and Why http://blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk- ...
- Vmware安装Kali
下载软件 破解版的Vmware14 kali(我的是kali-linux-2018.2-amd64) 配置虚拟机 新建虚拟机,选择自定义 虚拟机硬件兼容性 选择虚拟机硬件兼容性为Workstation ...
- JS代码判断IE6,IE7,IE8,IE9
做网页有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码! 有一种代码: <script type="text/javasc ...
- Node.js的环境搭建
Node.js 可以理解为服务端的JavaScript.是基于Chrome JavaScript 运行时的一个平台. 是一个事件驱动I/O,基于Google V8 引擎,执行起来速度特别快,性能非常好 ...
- git拉取远程分支并创建本地分支
本地分支推送至远程 git checkout local_branch git push origin local_branch:remote_branch 一.查看远程分支 使用如下Git命令查看所 ...