20172324 2017-2018-2《程序设计与数据结构》实验5报告
课程:《程序设计与数据结构》
班级: 1723
姓名: 曾程
学号:20172324
实验教师:王志强
实验日期:2018年6月13日
必修/选修: 必修
一、实验内容
-
实验一
参考link结对实现中缀表达式转后缀表达式的功能 MyBC.java结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java
-
实验二:
结对编程:1人负责客户端,一人负责服务器
注意责任归宿,要会通过测试证明自己没有问题
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式通过网络发送给服务器
服务器接收到后缀表达式,调用MyDC.java的功能计算 后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果 -
实验三:
加密结对编程:1人负责客户端,一人负责服务器
注意责任归宿,要会通过测试证明自己没有问题
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密后通过网络把密文发送给服务器
服务器接收到后缀表达式表达式后,进行解密(和客户端协商密钥,可以用数组保存),然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果 -
实验四:
密钥分发结对编程:1人负责客户端,一人负责服务器
注意责任归宿,要会通过测试证明自己没有问题
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文发送给服务器
客户端和服务器用DH算法进行3DES或AES算法的密钥交换
服务器接收到后缀表达式表达式后,进行解密,然后调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端
客户端显示服务器发送过来的结果 -
实验五:
完整性校验结对编程:1人负责客户端,一人负责服务器
注意责任归宿,要会通过测试证明自己没有问题
基于Java Socket实现客户端/服务器功能,传输方式用TCP
客户端让用户输入中缀表达式,然后把中缀表达式调用MyBC.java的功能转化为后缀表达式,把后缀表达式用3DES或AES算法加密通过网络把密文和明文的MD5値发送给服务器
客户端和服务器用DH算法进行3DES或AES算法的密钥交换
服务器接收到后缀表达式表达式后,进行解密,解密后计算明文的MD5值,和客户端传来的MD5进行比较,一致则调用MyDC.java的功能计算后缀表达式的值,把结果发送给客户端客户端显示服务器发送过来的结果
二、实验过程及结果
-
实验1结果截图:
-
实验2结果截图:
-
实验3结果截图:
-
实验4结果截图:
-
实验5结果截图:
三、实验过程中遇到的问题和解决过程
-
问题1:不能理解客户端及服务器所对应的服务器地址。
-
解决方案1:假设A是服务器B是客户端,B就应该请求A的服务器地址,服务器地址的查询:打开GIT CMD,输入
ipconfig
显示的在ipv4上的那个地址就是本机地址,要特别注意当切换网络时电脑的服务器位置也会改变,要注意及时更新。 -
问题2:在做实验4的时候,那一长串密钥之后有一排红字...Java balabala
connection reset
-
解决方案2:看看标答
第4个异常是java.net.SocketException: (Connection reset或者Connect reset by peer:Socket write error)。该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
我这里是客户端,socket最后关闭,原因只能是另一个是一端退出,但退出时并未关闭该连接。说明服务器端在把数据返回后,就把socket关闭了,而客户端还在读数据。所以就connection reset。
- 问题3:实验4自己和自己玩能玩得很开心,可是不能和结对伙伴一起玩,还有什么乐趣呢?
- 问题3解决方案:实验四客户端和服务器都生成了自己的密钥和密码,我作为服务器端,需要将客户端生成的公钥拷贝过来,和自己的私钥一起创建了一段共享的字节数组。
四、其他(感悟、思考等)
嘻嘻对的