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、客户端显示服务器发送过来的结果
最后将每个任务的代码上传到码云。
三、实验步骤
任务(一)
我和组员在虽然在结队编程任务中不在一组
但是都已经实现了中缀转后缀的功能,以及将后缀表达式利用栈进行运算的功能
因此任务(一)我们直接在之前代码的基础上进行修改即可
代码运行结果如下:可以包含分数形式的多种符号四则运算
任务(二)
通过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网络编程的更多相关文章
- 20145213《Java程序设计》实验五Java网络编程及安全
20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...
- 20145206《Java程序设计》实验五Java网络编程及安全
20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...
- 20145337实验五Java网络编程及安全
20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...
- JAVA课程实验报告 实验五 Java网络编程及安全
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225《Java程序设计》 实验五 Java网络编程及安全
20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...
- 20145208 实验五 Java网络编程
20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...
- 20145215实验五 Java网络编程及安全
20145215实验五 Java网络编程及安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 本次实验我的结对编程对象是20145208蔡野,我负责编写客 ...
- 20145220 实验五 Java网络编程
20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...
- 20145203 实验五 Java网络编程及安全
20145203 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验要求 1.基于Java Socket实现安全传输 2 ...
随机推荐
- 我厌倦了 Redux,那就造个轮子 Rectx:第三集
仓库:215566435/rectx 前言 麻烦快去我的仓库里面喷: 老子学不动了,求不要更新. 呵呵,你没想到吧,这玩意儿竟然有第三集!我靠,我自己都没想到,让我们悄悄的回顾一下前两集完全没想到,竟 ...
- 【Amaple教程】5. 插件
Amaple 拥有非常强大插件功能,这也是它的突出功能之一,Amaple插件一般表现为功能块(函数)或功能块(包含一系列函数和属性的Object对象),它除了支持Amaple规范定义的插件外,还支持所 ...
- 数据库介绍以及MySQL数据库的使用
一 数据库介绍 1.1 数据库定义 数据库就是存储数据的仓库 本质上就是一套cs结构的TCP程序 客户端连接到服务器 向服务器发送指令 完成数据的操作 1.2 常见数据库 关系型数据库 就是 ...
- 必备技能四、ajax及token
转https://segmentfault.com/a/1190000008470355?utm_source=tuicool&utm_medium=referral 转 https://ww ...
- 【WPF学习】第五十八章 理解逻辑树和可视化树
在前面章节中,花费大量时间分析了窗口的内容模型——换句话说,研究了如何在其他元素中嵌套元素,进而构建完整的窗口. 例如,考虑下图中显示的一个非常简单的窗口,该窗口包含两个按钮.为创建该按钮,在窗口中嵌 ...
- 【Python challenge】通关代码及攻略(0-11)
前言: 最近找到一个有关python的游戏闯关,这是游戏中的思考及通关攻略 最开始位于:http://www.pythonchallenge.com/pc/def/0.html 第0关 题目分析 提示 ...
- CVPR 2020 三篇有趣的论文解读
作者 | 文永亮 学校 | 哈尔滨工业大学(深圳) 研究方向 | 视频预测.时空序列预测 目录 AdderNet - 其实不需要这么多乘法 Deep Snake for Real-Time Insta ...
- c 将年月日转化为星期
/*得到年月日转化为星期几*/ LOCAL ulong_t DateWeekGet(ulong_t year,ulong_t month,ulong_t day) { ulong_t c = ; ul ...
- EOS基础全家桶(一)开篇
简介 从今天开始我会在FishoPark上与大家分享EOS的一些技术经验和基础,如果大家在看文章的过程中有任何问题,欢迎在网站下方的评论里留言,我会尽力为大家解答,如果发现我内容中所写有错,欢迎指正, ...
- c# Dictionary<string, object> 转JSON字符串
JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary<string, object> dict = new D ...