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 ...
随机推荐
- 服务器推送 SSE 了解一下?
hello~亲爱的看官老爷们大家好~过完年第一周已经结束,是时候开始制定新的工作计划了.主要负责的项目是数据可视化平台,而使用中如果服务器能有推送能力让页端得到相关通知的话,就能实现很多功能上的优化. ...
- 前端性能优化之 Composite
摘要: 一个 Web 页面的展示,简单来说可以认为经历了 JavaScript/Style/Layout/Paint/Composite 几个步骤.本文主要深入 Composite 部分,从渲染原理. ...
- docker 技术全面整理
docker 和 vm 虚拟机技术比较像,但又有一些区别. vm 像真机一样有 BIOS ,有硬盘,有网卡,声卡,可以安装操作系统, win7 win10 macOS ubuntu centOS,有好 ...
- 【GTS-Fail】GtsSecurityHostTestCases#testNoExemptionsForSocketsBetweenCoreAndVendorBan
[GTS-Fail]GtsSecurityHostTestCases#testNoExemptionsForSocketsBetweenCoreAndVendorBan [问题描述] Gts-7.0- ...
- 使用pyecharts绘制词云图-淘宝商品评论展示
一.什么是词云图? 词云图是一种用来展现高频关键词的可视化表达,通过文字.色彩.图形的搭配,产生有冲击力地视觉效果,而且能够传达有价值的信息. 制作词云图的网站有很多,简单方便,适合小批量操作. BI ...
- JVM01——JVM内存区域的构成
从本文开始将为各位带来JVM方面的知识点,关注我的公众号「Java面典」了解更多Java相关知识点. JVM内存主要分为三部分线程私有(Thread Local).线程共享(Thread Shared ...
- 【JDK】JDK源码分析-HashMap(2)
前文「JDK源码分析-HashMap(1)」分析了 HashMap 的内部结构和主要方法的实现原理.但是,面试中通常还会问到很多其他的问题,本文简要分析下常见的一些问题. 这里再贴一下 HashMap ...
- js实践篇:例外处理Try{}catch(e){}
本文转载至:http://blog.csdn.net/ocean20/article/details/7301008 程序开发中,编程人员经常要面对的是如何编写代码来响应错误事件的发生,即例外处理(e ...
- angular 项目中遇到rxjs error TS1005:';'
因为rxjs的版本问题,只需要在package.json 中将依赖的 rxjs:'^6.00' 改为 rxjs'6.00', 然后执行 npm update 更新下rxjs的依赖版本即可解决
- 常用正则表达式(手机号、邮箱、URL地址、身份证等等)
一.前言 不好的习惯:1.每一次用到正则都是上网copy一份,也没有去学习思考,看看都是什么意思: 2.一个项目里不同的地方用到了相同的校验,一直在重复的copy代码,并没有统一起来,万一哪天要修改规 ...