20172324 2017-2018-2《程序设计与数据结构》实验5报告

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解决方案:实验四客户端和服务器都生成了自己的密钥和密码,我作为服务器端,需要将客户端生成的公钥拷贝过来,和自己的私钥一起创建了一段共享的字节数组。

四、其他(感悟、思考等)

嘻嘻对的

五、参考资料

posted @ 2018-06-19 14:24  amberR  阅读(191)  评论(0编辑  收藏  举报
/*头部导航栏*/ #navigator { font-size:15px; border-bottom: 1px solid #ededed; border-top: 1px solid #ededed; height: 60px;/*导航栏高度,原始50*/ clear: both; margin-top: 25px; } /*导航栏设置,可以自定义导航栏的目录*/ #navList { min-height: 35px; float: left; } #navList li { /*每一个栏目节点*/ float: left; margin: 0 5px 0 0; /*这里原来是0 40px 0 0 */ } #navList a { /*栏目文字的格式*/ display: block; width: 5em; height: 22px; float: left; text-align: center; padding-top: 19px; }