20175314 实验五 Java网络编程

一、实验报告封面

课程:Java程序设计 班级:1753班 姓名:薛勐 学号:20175314

指导教师:娄嘉鹏 实验日期:2018年5月31日

实验时间:15:35 - 17:15 实验序号:五

实验名称: 网络编程与安全

实验目的:

1、掌握Java Socket的相关内容;

2、学会建立客户端与服务器端之间的联系;

3、学习并应用密码学的相关内容

二、实验内容

任务(一)

1、结对实现中缀表达式转后缀表达式的功能 MyBC.java

2、结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java

任务(二)

1、基于Java Socket实现客户端/服务器功能,传输方式用TCP

2、客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器

3、服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端

4、客户端显示服务器发送过来的结果

任务(三)

1、基于Java Socket实现客户端/服务器功能,传输方式用TCP

2、客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器

3、服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端

4、客户端显示服务器发送过来的结果

任务(四)

1、基于Java Socket实现客户端/服务器功能,传输方式用TCP

2、客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器

3、客户端和服务器用DH算法进行3DES或AES算法的密钥交换

4、服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端

5、客户端显示服务器发送过来的结果

任务(五)

1、基于Java Socket实现客户端/服务器功能,传输方式用TCP

2、客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器

3、客户端和服务器用DH算法进行3DES或AES算法的密钥交换

4、服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端

5、客户端显示服务器发送过来的结果

最后将每个任务的代码上传到码云。

三、实验步骤

任务(一)

我和组员在虽然在结队编程任务中不在一组

但是都已经实现了中缀转后缀的功能,以及将后缀表达式利用栈进行运算的功能

因此任务(一)我们直接在之前代码的基础上进行修改即可

代码运行结果如下:可以包含分数形式的多种符号四则运算

任务(二)

通过java.net包中的Socket类和ServerSocket类来实现这个功能

  • 客户端

  • 服务器端

任务(三)

参考Java 密码学算法,复习使用DES算法

  • 客户端

  • 服务器端

任务(四)

参考DH算法原理,学习使用DH算法

  • 客户端

  • 服务器端

任务(五)

参考Java 密码学算法

在任务(四)的基础上引入MD5算法加密的类,调用其他的函数,参数为要加密的字符串,返回加密后的字符串

  • 客户端

  • 服务器端

四、码云链接

五、遇到的问题

  • 从第二个任务开始,调试代码经常会遇到Exception in thread "main" java.lang.NullPointerException,但电脑重启后又恢复正常
  • 通过查阅资料,我认为出现这样的warning主要有两个原因

    ①数组空间在使用前没有进行初始化

    ②之前的服务器端口关闭,开了多个服务器端口,却使用了同样的端口

    综上我应该是第二种情况,电脑重启或IDEA重启后端口被重置故正常

六、感想与收获

本次实验内容较多,完成过程比较漫长,是之前在C语言从未接触过的端口,综合性高,对我来说依然难度很大,即使是最后一个实验,在接下来的编程中一定会继续努力提高自己

七、Personal Software Process时间

步骤 耗时 百分比
需求分析 60 15%
设计 80 20%
代码实现 180 45%
测试 40 10%
分析总结 40 10%

八、参考资料

20175314 实验五 Java网络编程的更多相关文章

  1. 20145213《Java程序设计》实验五Java网络编程及安全

    20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...

  2. 20145206《Java程序设计》实验五Java网络编程及安全

    20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...

  3. 20145337实验五Java网络编程及安全

    20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...

  4. JAVA课程实验报告 实验五 Java网络编程及安全

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  5. 20145225《Java程序设计》 实验五 Java网络编程及安全

    20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...

  6. 20145208 实验五 Java网络编程

    20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  7. 20145215实验五 Java网络编程及安全

    20145215实验五 Java网络编程及安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 本次实验我的结对编程对象是20145208蔡野,我负责编写客 ...

  8. 20145220 实验五 Java网络编程

    20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  9. 20145203 实验五 Java网络编程及安全

    20145203 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验要求 1.基于Java Socket实现安全传输 2 ...

随机推荐

  1. Dubbo进阶

    注册中心zookeeper 什么是注册中心: 注册中心就是用来存储服务信息的地方,就像房屋中介一样; 为什么需要注册中心: 在前面的例子中我们使用了客户端与服务器直连的方式完成了服务的调用,在实际开发 ...

  2. 浅谈Java开发三层架构

    三层架构,一般来说就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 概念简介 1.表现层(UI):简单来说,就是展现 ...

  3. HashMap 速描

    HashMap 速描 之前简单的整理了Java集合的相关知识,发现HashMap并不是三言两语能够讲明白的,所以专门整理一下HashMap的相关知识. HashMap 存储结构 HashMap是一个哈 ...

  4. js 实现简单的选项卡

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. (转)GNU风格ARM汇编语法指南(非常详细)1

    原文地址:http://zqwt.012.blog.163.com/blog/static/120446842010111481551809/ 汇编源程序一般用于系统最基本的初始化:初始化堆栈指针.设 ...

  6. Docker基本概念及架构

    一.Docker基本概念 Docker是一个开源的容器引擎,基于Go 语言并遵从 Apache2.0 协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...

  7. 【转】分布式架构的演进(JavaWeb)

    作者:李小翀 链接:https://www.zhihu.com/question/22764869/answer/31277656 来源:知乎 1.初始 初始阶段 的小型系统 应用程序.数据库.文件等 ...

  8. liunx 安装 zookeeper(转)

    转自:https://www.cnblogs.com/expiator/p/9853378.html linux安装zookeeper及使用 一.安装条件 想要安装zookeeper,必须先在linu ...

  9. C# 获取系统所有字体

    获取已安装的所有字体列表 System.Drawing.FontFamily StringBuilder str = ); InstalledFontCollection fonts = new In ...

  10. 关于WDK开发内核签名之WHQL签名认证流程简介

    WHQL简介: WHQL全称Windows Hardware Quality Labs testing(Windows硬件质量实验室测试)它是对所涉及的第三方硬件或软件进行一系列测试,然后提交测试的日 ...