zoukankan      html  css  js  c++  java
  • 201521123111《Java程序设计》第13周学习总结

    本次作业参考文件
    正则表达式参考资料

    1. 本周学习总结

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

    2. 书面作业

    1. 网络基础

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

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

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

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

    Answer:没收到内容,返回的内容不是cec.jmu.edu.cn,下个操作返回了网页源代码。

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

    1.5 编写网络程序必不可少的几个信息是什么?
    Answer:需要IP,端口,域名,协议

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

    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:因为没有得到获取的HTML文档。

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

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

    2.6 选做:实现2.5

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

    3. 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 (多线程服务器)
    

    4. UDP服务器

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

    参考:UDPServer.java
    


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

    5.1 前面编写的程序用到了大量的流的相关知识。简述,编写网络程序时应当选择什么样的流?场景如:简单的文字聊天、文件传输、应用层协议服务器,如QQ、聊天室、网络游戏。
    Answer:socket的输入输出流是字节流,然后用字符流来包装。一般都用字节流与字符流结合吧。

    6. 代码阅读

    阅读ServerAndThread目录中的源代码
    6.1 运行该程序(截图)。简述这个程序的主要功能。

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

    实现客户端和服务端的通信

    6.3 简述这个程序有什么不足之处及改进方法.
    Answer:从上上图可以看出服务端向客户端发消息没有加以区分,还有换行符问题。

    选做:7. 网络爬虫

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

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

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

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

    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官网
  • 相关阅读:
    NYOJ 10 skiing DFS+DP
    51nod 1270 数组的最大代价
    HDU 4635 Strongly connected
    HDU 4612 Warm up
    POJ 3177 Redundant Paths
    HDU 1629 迷宫城堡
    uva 796
    uva 315
    POJ 3180 The Cow Prom
    POJ 1236 Network of Schools
  • 原文地址:https://www.cnblogs.com/yudi/p/6866183.html
Copyright © 2011-2022 走看看