• 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次实验(数据库)

  • 相关阅读:
    Python学习笔记
    AC自动机跟随Kuangbing学习笔记
    【后缀数组】【poj2774】【 Long Long Message】
    【思路题】【多校第一场】【1001.OO’s Sequence】
    【求出所有最短路+最小割】【多校第一场】【G题】
    【后缀数组学习中】
    【关于字符串要补的题】
    49.运维6-ansible
    48.python&&django时区转化
    47.python脚本自定义token验证
  • 原文地址:https://www.cnblogs.com/zhrb/p/6864219.html
Copyright © 2020-2023  润新知