20192327 2020-2021-1 《数据结构与面向对象程序设计》实验四报告
20192327 2020-2021-1 《数据结构与面向对象程序设计》实验四报告
课程:《程序设计与数据结构》
班级: 1923
姓名: 何源
学号: 20192327
实验教师:王志强
实验日期:2020年10月26日
必修/选修: 必修
1.实验内容
(一)Java Socket编程
结对编程。结对伙伴A编写客户端SocketClient.java,结对伙伴B编写服务器端。
(二)Java和密码学
以结对的方式完成Java密码学相关内容的学习
(三)编写有理数/复数计算器
结对编程,结对伙伴A编写有理数计算器。结对伙伴B编写复数计算器。
(四)远程有理数计算器
结对编程,结对伙伴A编程实现客户端,结果伙伴B实现服务器端。
客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果。
(五)远程复数计算器
结对编程,结对伙伴B编程实现客户端,结队伙伴A实现服务器端。
2.实验过程
我(A),结对伙伴(B)2310
1.与结对伙伴编写客户端和服务器。加分项:使用Base64对传输内容进行加密。
结果如下:
2.研究java密码学
通过对云班课上内容的研究,依次将其上的五种加密方式以代码形式运行如下:
3.编写复数计算器
我编写的有理数计算器是为远程有理数计算器做基础
输入表达式后自动计算出结果
4.远程有理数计算器
我编写的服务器端与客户端如下
5.远程复数计算器
我编写的服务器端与客户端如下
3.实验过程中遇到的问题和解决过程
问题1:java: 程序包com.sun.corba.se.impl.orbutil不存在
解决:换源,重装
问题2:分割后形成的数组开头总是空
解决:从数组第二个值开始使用
问题3:Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.base/sun.nio.ch.Net.connect0(Native Method)
at java.base/sun.nio.ch.Net.connect(Net.java:574)
at java.base/sun.nio.ch.Net.connect(Net.java:563)
at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333)
at java.base/java.net.Socket.connect(Socket.java:648)
at java.base/java.net.Socket.connect(Socket.java:597)
at java.base/java.net.Socket.
at java.base/java.net.Socket.
at week8.CLA01.SocketClient.main(SocketClient.java:12)
解决:在运行服务器之后再打开客户端
问题4:无法将分割后的字符串转为浮点
解决:使用parseof函数而不是getvalue函数
问题5:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
解决:调试程序参数
问题6:服务器端无法调用自编函数
解决:将自编函数与服务器端置于同一包内
其他(感悟、思考等)
多练,多练,多练。一定要多练。多看书,只有这样才能跟上节奏,只是单纯的指望上课时的内容是靠不住的。
参考资料
- 《Java程序设计与数据结构教程(第二版)》
- 《Java程序设计与数据结构教程(第二版)》学习指导!