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

    1. 本章学习总结

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

    • GET / HTTP/1.0可以返回一个HTML格式的文本页

    • IP地址可以用来标识网络上的主机

    • Socket通常用来实现客户端和服务器端的连接

    • 网络上两个程序通过一个双向通信链路实现数据交换,这个双向链路的一端称为一个Socket

    • 对从Socket对象中获得的流进行操作,即可进行网络通信

    • ServerSocket的accept方法用来监听端口,当没有客户端连接时就阻塞

    2. 书面作业

    1.网络基础

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

    • 不同:返回结果最明显不同为时间,ping cec.jmu.edu.cn用时远小于ping www.baidu.com。

    • 原因:因为我们与cec.jmu.edu.cn服务器的距离远小于我们与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。

    • 输入telnet cec.jmu.edu.cn 80没有返回内容,在输入GET /index HTTP/1.0命令,返回结果如图。

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

    • 查看网络连接监视器,在运行的有WPS、QQ、网易云音乐等程序,用到了80、443、6003等远程端口。

    • QQ占用80端口与远程IP交互,IP分布地为广东省深圳市,使用了TCP协议。

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

    • 套接字、流、协议。

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

    • 因为没有发送get请求获取html文档。

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

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

    • 添加输出流,输出流内容由控制台指定。

    2.6 选做:实现2.5

    3.ServerSocket与TCP服务器

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

    1.创建服务器MenuServer.java,在8190端口监听。用户连接后,进入初始状态,在该状态下,当用户输入quit的,则服务器退出。当用户输入menu,则显示菜单。然后用户可以根据传递过来的菜单,输入相应的指令。服务器则根据客户端传过来的指令,执行一些相关操作。

    2.使用telnet localhost 8190连接到该服务器,测试MenuServer。

    3.改写题目2的Client.java,连接MenuServer。观察返回结果?思考:如何让Client.java对既可以向MenuServer发送命令,同时还能接收MenuServer的信息。(即,如何开发一个简易版的telnet)

    • 待完善

    4.考核点:MenuServer编写指导:在服务器端写一个函数public static void menu(…..){ 显示菜单…,接受输入…},该函数主要负责显示菜单和接受客户端的输入,并根据输入来调用相应的服务,menu的输入参数应该是什么请思考?。菜单有4个选项:

    1.显示服务器当前时间            
    2.您的IP            //显示客户端的IP
    3.文件搜索          //搜索服务器中符合条件的文件名
    4.退出菜单          //仅仅退出菜单显示,退回初始状态而不断开连接
    

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

    4.UDP服务器

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

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

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

    • socket的输入输出流是字节流,然后用字符流来包装。

    6. 代码阅读

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

    • 主要功能就是客户端与服务端之间的通信。

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

    • 由powerdesigner生成结构图

    功能
    ClientChart 客户端界面
    ClientReadThread 客户端读取线程
    ClientListener 客户端的监听器
    ServerChart 服务端界面
    ServerReadThread 服务端读取线程
    SeverActionListener 服务端的监听器

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

    • 服务端发送内容,在客户端却显示客户端说。

    • 服务端发送内容后,客户端发送的内容在服务端显示不换行。

    3. 使用码云管理Java代码

    4.课外阅读

    4.1 Java Tutorial:Custom Networking

    4.2 HTTP协议简介

    4.3 一个简单的小爬虫

    4.4 进阶:HTTPComponent的使用

    1. 阅读HttpClient 教程,使用HTTPComponent编写一些与HTTP服务器交换的示例程序

  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/ghnb/p/6886048.html
Copyright © 2011-2022 走看看