201521123005《Java程序设计》第十三周学习总结
1. 本周学习总结##
1.网络基本概念
2.网络常用命令
ipconfig 查看网络配置信息,如ip地址
ping 测试网络是否连通
telnet 远程登录
ftp 登陆ftp
Fport (xp下)查看计算机端口使用情况
3.连接到服务器
套接字(Socket)
Socket s = new Socket("cec.jmu.edu.cn",80)
s.getInputStream(); //通过套接字获得输入流
s.close(); //关闭连接
2. 书面作业##
Q1. 网络基础Q
1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同?
返回的IP地址和往返程的估计时间不同,ping cec.jmu.edu.cn比ping www.baidu.com包的传输时间更短。
原因:不同的域名有不同的IP地址,www.a.shifen.com<-->14.215.177.38 ,jmuweb2.jmu.edu.cn <--> 210.34.128.152。因为14.215.177.38 所在地址在广东省广州市 电信,210.34.128.152所在地址在福建省厦门市 集美大学 教育网 所以cec.jmu.edu.cn的服务器离我们更近,ping cec.jmu.edu.cn比ping www.baidu.com包的传输时间更短。
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`的主页内容。因为`cec.jmu.edu.cn`的协议是HTTP,需要有HTTP命令才有响应。使用telnet连接到HTTP服务器,要从cec.jmu.edu上请求index.html页面,首先要连接到服务器的80端口。
之前的已经连接上了服务器,发送http请求消息。使用GET /index HTTP/1.0命令意思是通过1.1版本协议请求index.html页面。服务器返回后就断开连接。
1.4 启动ConnectionWatcher, 然后启动若干个可以联网的程序(如QQ, telnet,浏览器等),查看本机上有什么程序联网,使用了什么端口?QQ占用了什么端口和那些远程IP进行交互,这些IP分布地在那里?使用了什么协议进行通信?
telent,qq,360浏览器等程序在运行。有443(HTTPS超文本传输安全协议),80(HTTP超文本传送协议),23(Telnet(远程登录)服务),1400(TCP传输控制协议)端口。。QQ占用了80端口和1400端口,IP:183.3.235.188在广东省深圳市 电信,IP:110.81.153.141在福建省泉州市 电信,IP:59.37.96.67在广东省深圳市 电信,IP:210.34.129.218在福建省厦门市 集美大学 教育网。使用TCP协议进行通信。
1.5 编写网络程序必不可少的几个信息是什么?
IP地址和端口,域名,使用TCP还是UDP协议。
参考:实验任务书-题目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进一步观察返回结果。没有任何返回结果,为什么?怎么操作
因为状态是CLOSE-WAIT即被关闭。在对方关闭连接之后服务器程序自己没有进一步发出FIN信号,一般原因都是TCP连接没有调用关闭方法。换句话说,就是在对方连接关闭之后,程序里没有检测到,或者程序压根就忘记了这个时候需要关闭连接,于是这个资源就一直被程序占着。应该发送get请求获取html文档,才有结果。
运行结果:
2.4 启动网络调试助手,将其设置为TCP Server,并启动,如下图所示
尝试使用Client.java连接该TCP Server,使用该服务器向Client发送信息。(截图)
2.5 回答:现在的Client.java只能接收信息,能否改造Client.java使其可以与服务器进行交互(服务器可以发送信息给Client,Client也可发送信息给服务器),写出大概思路即可。
参考:实验任务书-题目2
Q3. ServerSocket与TCP服务器
3.1 简易单线程MenuServer,题目3.1-3.4。(关键代码及运行截图,包含学号)可以使用网络调试助手,将其设置为TCP Client(IP与端口填你的MenuServer的IP与端口),连接你的MenuServer。其中的文件搜索功能为选做?
运行结果:
输入4,左上网络设置仍为断开,仅仅退出菜单
输入BYE,服务器断开,左上网络设置由断开变为连接
3.2 多线程MenuServer。(截图证明你这个是多线程服务器,使用telnet连接)
输入telnet 127.0.0.1 8189
输入telnet localhost 8189
Eclipse控制台 Spawning 1表示第一个线程,Eclipse控制台 Spawning 2表示第二个线程
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 前面编写的程序用到了大量的流的相关知识。简述,编写网络程序时应当选择什么样的流?场景如:简单的文字聊天、文件传输、应用层协议服务器,如QQ、聊天室、网络游戏。
Q6. 代码阅读
阅读ServerAndThread目录中的源代码
6.1 运行该程序(截图)。简述这个程序的主要功能。
主要功能:客户端和服务端的信息可以互相传递,客户端与客户端也可以进行信息传递。
6.2 画出源代码的结构图(各个类的依赖关系)。并简要说明各个类的功能。
类 | 功能 |
---|---|
ClientChart | 设置客户端界面 |
ClientReadThread | 客户端读取线程 |
ClientListener | 客户端的监听器 |
ServerChart | 设置服务端界面 |
ServerReadThread | 服务端读取线程 |
SeverActionListener | 服务端的监听器 |
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官网
201521123005《Java程序设计》第十三周学习总结的更多相关文章
- “2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排
“2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排1. 图形界面事件处理技术是Java GUI编程核心技术,要求同学们掌握其基本原理和基本编程模型:2. 本周四理论课 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第十三周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第十三周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
- 20165225《Java程序设计》第九周学习总结
20165225<Java程序设计>第九周学习总结 1.视频与课本中的学习: 第十三章学习总结 URL类 URL对象包含三部分信息:协议.地址和资源 创建URL对象两种方法: public ...
- 20165236 2017-2018-2 《Java程序设计》第九周学习总结
20165236 2017-2018-2 <Java程序设计>第九周学习总结 一.第十三章教材内容总结 1.URL类 URL类是java.net包中的一个重要的类,使用URL创建对象的应用 ...
- 20155201 2016-2017-2 《Java程序设计》第一周学习总结
20155201 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 每一章的问题: 第一章 Java ME都有哪些成功的平台? 第二章 哪些情况可以使用impo ...
- 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结
20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...
- 20155229 2016-2007-2 《Java程序设计》第一周学习总结
20155229 2016-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 1~18章的提问: 第一章:怎样撰写Java才不会沦于死背API文件.使用"复制. ...
- 20155310 2016-2017-2 《Java程序设计》第一周学习总结
20155310 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 通过对第一章第二章的学习我了解到了JVM.JRE与JDK的重要性,并且下载.安装并测试了JD ...
- 20155313 2016-2017-2 《Java程序设计》第一周学习总结
20155313 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周的Java学习进入了一个全新的阶段,对于我这样的并没有每天花费时间钻研的同学来说,最后几 ...
随机推荐
- oracle 表空间 表权限 用户
启动数据库命令分为三个阶段: 1.查看所有用户:select * from dba_user;select * from all_users;select * from user_users;2.查看 ...
- WebBrowser keystroke
问题描述:将对话框中的回车消息传递到WebBrowser控件中去. 一开始的解决方案是:通过iwebbrowser2的成员函数get_HWND获取控件的句柄,然后通过SendMessage发送按键消息 ...
- 给Lisp程序员的Python简介
给Lisp程序员的Python简介 作者:Peter Norvig,译者:jineslong<zzljlu@gmail.com> 这是一篇为Lisp程序员写的Python简介(一些Pyth ...
- 电脑重装系统按什么键进U盘PE
电脑重装系统按什么键进U盘PE... -------------------------- 各品牌电脑重装系统快捷按键进U盘PE: -------------------------- Dell电脑重 ...
- latex中pdflatex与xelatex的区别
1. PDFTeX程序:Tex语言的一个实现,也就是把Tex语言转换为排版的一个程序.它会把TeX 语言写的代码直接编译成 PDF文件. 2. PDFLaTeX命令:PDFTeX程序中的命令,用来编译 ...
- iphone 4s页面引用jssdk无效
今天在做项目的时候,发现了一个bug,用户在iphone 4s上使用该项目打开网页时,调用上传图片的接口没反应. 无语啊.找了半天也没找到是什么问题.
- mongodb菜鸟整理
一,mongodb的安装与连接 从官网下载后,解压或者安装到某个目录下 1 首先需要自己创建一个db文件夹 ,用于存放数据库的数据 然后还需要创建一个log文件夹,里面需要自己创建一个mongodb ...
- linux(十三)之磁盘分区、创建文件系统、挂载
前面学习了linux的用户管理 ,感觉是不是多lnux的多用户多任务的系统感觉十分了解了,但是其实并不然的.你还需要了解更多.接下来给大家分享的是 在vmware中添加硬盘创建分区,然后挂载到指定目录 ...
- bugly cocos 接入和 符号表使用
bugly cocos 接入和 符号表使用 在bugly网站下载 BuglyCocosPlugin 的sdk ios 1. 在 项目的 classes 里面新建 文件夹 BuglyCocosPlug ...
- Phpstorm中使用SFTP
Phpstorm中经常会出现FTP连接失败的问题,这个时候我们可以使用SFTP来连接服务器. 1.添加服务器.tools--deployment--configuration/browse Remot ...