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. echart 新手踩坑

    仪表盘踩坑 我采用的是单文件引入的方式来加载echarts图标也可以使用配置等方式详情参考文档,如果同学们要做出更加丰富的样式请参考文档配置手册配置手册:http://echarts.baidu.co ...

  2. docker 学习(四)

    1.Dockerfile简介 1)什么是Dockerfile Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的 ...

  3. 网络编程概念 和OSI七层结构简介

    什么是网络编程 网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互链接组成的 编写基于网络的应用程序的过程序称之为网络编程 学习网络编程就是要学习利用网络来与另一台计算机相互传输数据 ...

  4. 第一个Hystrix程序 Hystrix 一

    1.导入jar包 <dependencies> <dependency> <groupId>com.netflix.hystrix</groupId> ...

  5. angular -——组件样式修改不成功

    angular组件样式修改不成功! 自己定义的css可以成功 组件的不行 style在模板字符串里 直接没有 class 是显示的 但是样式不生效 加上面 即可,为什么?我也不太清楚.有知道答案的请回 ...

  6. 如何从普通程序员晋升为架构师 面向过程编程OP和面向编程OO

    引言 计算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做 ...

  7. 设计模式之委派模式,大名鼎鼎的Spring都在用

    什么是委派模式 虽然说委派模式不属于Gof23中设计模式,但这并不影响它成为一种经典的设计模式. "委派"字面意思就是指派一件事情给某人.类比到生活中的场景,比如项目leader指 ...

  8. axios请求拦截器

    import axios from 'axios';   // 创建axios实例   let service = null;   if (process.env.NODE_ENV === 'deve ...

  9. Graylog2进阶 打造基于Nginx日志的Web入侵检测分析系统

    对于大多数互联网公司,基于日志分析的WEB入侵检测分析是不可或缺的. 那么今天我就给大家讲一讲如何用graylog的extractor来实现这一功能. 首先要找一些能够识别的带有攻击行为的关键字作为匹 ...

  10. 《自拍教程45》Python_adb实时监控Logcat日志

    接上一篇:adb命令_一键截取logcat日志, 有一天, 系统稳定性开发负责人找到我,希望我能在跑android 系统monkey的时候, 实时监控logcat的输出,如果一旦发现"jav ...