java 网络编程实验_20175314 实验五 Java网络编程

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、客户端显示服务器发送过来的结果 最后将每个任务的代码上传到码云。

三、实验步骤

任务(一)

我和组员在虽然在结队编程任务中不在一组 但是都已经实现了中缀转后缀的功能,以及将后缀表达式利用栈进行运算的功能 因此任务(一)我们直接在之前代码的基础上进行修改即可 代码运行结果如下:可以包含分数形式的多种符号四则运算

3aff59cc273ab64138ebb073d92faaaf.png

任务(二)

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

客户端

82108f72b5002ff3b8136aff8ebac7fc.png

服务器端

773c97699d39c7222ebe1281f8eacf4c.png

任务(三)

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

客户端

4f6e6f94093726382cfbfc724d3db4d9.png

服务器端

20bdcb4f97317d184d84662b12fd5c59.png

任务(四)

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

客户端

3f026f103f0b4215089dcbc564c75c30.png

服务器端

acccffe52ff3ec2d7305ed6563d98c74.png

任务(五)

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

客户端

f83ac5b1904ac78e33c9c8e61d9986fd.png

服务器端

ae9493717e91ffe2ac62eb9003f1bb67.png

五、遇到的问题

从第二个任务开始,调试代码经常会遇到Exception in thread "main" java.lang.NullPointerException,但电脑重启后又恢复正常

通过查阅资料,我认为出现这样的warning主要有两个原因 ①数组空间在使用前没有进行初始化 ②之前的服务器端口关闭,开了多个服务器端口,却使用了同样的端口 综上我应该是第二种情况,电脑重启或IDEA重启后端口被重置故正常

六、感想与收获

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

七、Personal Software Process时间

步骤

耗时

百分比

需求分析

60

15%

设计

80

20%

代码实现

180

45%

测试

40

10%

分析总结

40

10%

八、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值