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

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

    嘻嘻对的

    五、参考资料

  • 相关阅读:
    [bzoj 4553][Tjoi2016&Heoi2016]序列
    [bzoj 5143][Ynoi 2018]五彩斑斓的世界
    [bzoj 4939][Ynoi 2016]掉进兔子洞
    luogu_P3674 小清新人渣的本愿
    [bzoj 2809][Apio2012]dispatching
    [bzoj 3110][zjoi 2013]K大数查询
    Entity Framework技巧系列之九
    Entity Framework技巧系列之八
    Entity Framework技巧系列之七
    Entity Framework技巧系列之六
  • 原文地址:https://www.cnblogs.com/amberR/p/9198398.html
Copyright © 2020-2023  润新知