zoukankan      html  css  js  c++  java
  • Java第10次实验(网络)

    参考资料

    本次作业参考文件
    正则表达式参考资料
    漫画:HTTP 协议极简教程,傻瓜都能看懂!

    注:主要根据实验任务书的指导完成本次实验。

    第1次实验

    1. 网络基础

    1. ipconfig、ping
    2. ConnectionWatcher(简单讲解)
    3. telnet(连接BBS与连接Web服务器的不同)
      有的电脑未安装telnet,可以在控制面板-程序-添加/删除Windows功能中选择Telnet客户端进行安装。

    2. 编写TCP客户端程序(考核)

    任务:

    1. 参考SocketTest.java编写一个简单的TCP客户端Client.java。
      注:Client中远程服务器IP不要填入127.0.0.1或localhost,否则可能会出现Connection Refused!
    2. 使用网络调试助手4.2建立一个TCP Server。然后使用Client.java连接该TCP Server(注意:服务器向客户端发送信息时,因为客户端使用hasNextLine()方法,所以服务器端发送的消息需带回车换行,客户端才能将消息读出)。
    3. 使用ConnectionWatcher查看本机所占用的端口。

    考核需回答:

    1. 在这个实验里。客户端与服务器端分别是谁?他们之间使用什么传输层协议进行通信?
    2. 客户端使用nextLine()读取服务器端发来的信息,可能会碰到什么问题?怎么解决?
    3. 启动ConnectionWatcher,查看客户端与服务器端对应的进程名是什么?分别使用了哪两个端口进行通信?怎么证明是这两个进程在进行通信?
    4. 思考(可选):先用网络调试助手连接服务器。然后安装telnet,使用telnet连接这个服务器,能否连接成功?为什么?使用ConnectionWatcher查看telnet与服务器的连接。

    注意事项:

    • 客户端发送给服务器端(输出流,PrintWriter缓冲区与autoflush)
    • 常见错误:网络调试助手显示bind() failed表示相应端口已经被其他程序占用,请结束该程序。

    3. ServerSocket与TCP服务器(考核)

    任务:

    1. 单线程MenuServer服务器
      常见错误:Eclipse中显示Address already in use ,端口已经被占用,先关闭占用该端口的程序。
      验证:在另外一台电脑上启动网络调试助手,连接你编写的服务器端。注意:IP地址能设定为127.0.0.1吗?
    2. 多线程MenuServer服务器
      在单线程MenuServer程序中,服务器端只能允许一个客户端连接,如何允许服务器同时连接多个客户端?
    3. 进阶:建立基于TCP的客户端/服务端一体化程序
      现在通过网络调试助手可以实现向服务器发送消息,同时从服务器接受消息。改造Client.java为其增加GUI界面,实现同时收发消息的功能。

    验证:
    用你编写的客户端或服务器与隔壁同学的编写的服务器与客户端,在不同的电脑上运行并进行通信。

    考核1完成任务:
    实验任务书中的MenuServer,服务器对连接进来的客户端发送字符菜单。菜单中包含如下功能:

    1. 1.显示服务器当前时间2.显示客户端的IP与端口3.退出菜单。功能2请查询Socket文档。
    2. 可以根据客户端发送过来的字符串,执行相应的功能并将结果返回给客户端。
    3. 可以重复显示菜单,直到客户端选择退出菜单
    4. 思考1:如果碰到中文乱码?怎么解决?
    5. 思考2:当客户端选择退出菜单,服务器也退出了无法被其他客户端访问。如何改进?

    考核2:

    • 将MenuServer改造成多线程服务器。

    特别考核3:
    改写题目2的Client.java,连接MenuServer。观察返回结果?思考:如何让Client.java既可向MenuServer发送命令,同时还能接收MenuServer的信息。提示:使用多线程。

    参考资料:

    EchoServer.java,ThreadedEchoServer.java (多线程服务器)

    思考

    前面实验中,服务器与客户端之间传递的都是字符。如果希望服务器与客户端之间传递字节,比如传递一个对象或一个字节数组。要怎么实现?

    4. UDP服务器(考核)

    使用UDP改造前面的MenuServer与对应的MenuClient

    5. URL类(考核)

    HTTP进阶:

    • 使用JDK 11中的HTTP Client来改写URLReader.java
    • 编写客户端访问jwc.jmu.edu.cn网站,尝试用客户端使用其中的搜索功能。
    • 使用jsoup实现简单网络爬虫

    5. 网络框架

    Netty

    更多参考资料:

    Java第11次实验(数据库)

  • 相关阅读:
    Data Base mysql备份与恢复
    java 乱码问题解决方案
    【知识强化】第二章 物理层 2.1 通信基础
    【知识强化】第二章 进程管理 2.2 处理机调度
    【知识强化】第二章 进程管理 2.1 进程与线程
    【知识强化】第一章 操作系统概述 1.3 操作系统的运行环境
    【知识强化】第一章 网络体系结构 1.1 数据结构的基本概念
    【知识强化】第一章 网络体系结构 1.2 计算机网络体系结构与参考模型
    【知识强化】第一章 网络体系结构 1.1 计算机网络概述
    【知识强化】第一章 操作系统概述 1.1 操作系统的基本概念
  • 原文地址:https://www.cnblogs.com/zhrb/p/6864219.html
Copyright © 2011-2022 走看看