20165309 实验五 网络编程与安全
2017-2018-2 20165309实验五《Java面向对象程序设计》实验报告
一、实验原理
1.栈的应用
- 后缀式的运算规则为:运算符在式中出现的顺序恰为表达式的运算顺序;每个运算符和在它之前出现且紧靠它的两个操作数构成一个最小表达式。
- 由中缀式求得后缀式可以使用栈,伪代码如下:
- 设立一个栈,存放运算符,首先栈为空;
- 从左到右扫描中缀式,若遇到操作数,直接输出,并输出一个空格作为两个操作数的分隔符;
- 若遇到运算符,则与栈顶比较,比栈顶级别高则进栈,否则退出栈顶元素并输出,然后输出一个空格作分隔符;
- 若遇到左括号,进栈;若遇到右括号,则一直退栈输出,直到退到左括号止。
- 当栈变成空时,输出的结果即为后缀表达式。
- Linux下
dc
的运算符:+
: 依次弹出w1与w2,将w2+w1压栈。精度为结果值精度-
: 依次弹出w1与w2,将w2-w1压栈*
: 依次弹出w1与w2,将w2*w1压栈。精度为结果值精度与precision中较大值/
: 依次弹出w1与w2,将w2/w1压栈。精度为precision
2.套接字
- 网络套接字是基于TCP协议的有连接通信。
- 套接字连接就是客户端的套接字对象和服务器端的套接字对象通过输入流、输出流连接在一起。
- 服务器建立ServerSocket对象,ServerSocket对象负责等待客户端请求建立套接字连接,而客户端建立Socket对象向服务器发出套接字连接请求。
- 要创建一个套接字,可以使用Socket的构造方法,如:
public Socket(java.lang.String host, int port)
。其中,host是远程机器名或IP地址,port是远程应用程序的端口号。
3.Java 密码学算法
二、实验内容
1.网络编程与安全-1
结对实现中缀表达式转后缀表达式的功能 MyBC.java
结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java
- 测试代码运行结果如下
2.网络编程与安全-2
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
服务器接收到后缀表达式,调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果
- 客户端
- 服务器
3.网络编程与安全-3
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果
- 客户端
- 服务器
4.网络编程与安全-4
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
客户端和服务器用DH算法进行3DES或AES算法的密钥交换
服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果
- 客户端
- 服务器
5.网络编程与安全-5
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
客户端和服务器用DH算法进行3DES或AES算法的密钥交换
服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果
- 客户端
- 服务器
代码链接
三、实验中遇到的问题及解决
- 问题:报错如下
- 解决:换个别的端口号。
四、实验收获
我在本次结对实验中负责的部分是服务器,整个实验的过程对我来说极为艰难,不得不在借鉴了很多学长学姐的博客和依赖大量的百度下得以完成,拖慢了结对伙伴的进度...总而言之,好好看书,十三章很重要。
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 20min | 7.4 |
设计 | 60min | 22.2 |
代码实现 | 120min | 44.4 |
测试 | 40min | 14.9 |
分析总结 | 30min | 11.1 |