课程:《程序设计与数据结构》
班级: 1823
姓名: 华罗晗
学号:20182308
实验教师:王志强
实验日期:2019年9月30日
必修/选修: 必修
1、实验内容
(一)Java Socket编程
1.学习蓝墨云上教材《Java和Android编程》“第16章 输入/输出 ”和“第22章 网络”,学习JavaSocket编程
2.结对编程。结对伙伴A编写客户端SocketClient.java,结对伙伴B编写服务器端。
3.截图加学号水印上传蓝墨云,代码push到码云,并撰写实验报告。
(二)Java和密码学
参考 http://www.cnblogs.com/rocedu/p/6683948.html
以结对的方式完成Java密码学相关内容的学习(帖子中所有代码和相关知识点需要学习)。提交学习成果码云链接和代表性成果截图,要有学号水印。
(三)编写有理数/复数计算器
结对编程,结对伙伴A编写有理数计算器。结对伙伴B编写复数计算器。截图加水印上传蓝墨云,代码push码云。
(四)远程有理数计算器
结对编程,结对伙伴A编程实现客户端,结果伙伴B实现服务器端。
客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果。截图加水印上传蓝墨云,代码push码云。
(五)远程复数计算器
结对编程,结对伙伴B编程实现客户端,结果伙伴A实现服务器端。
客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴A(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端B,B收到结果后输出结果。截图加水印上传蓝墨云,代码push码云。
2、实验过程及结果
(1)根据云班课上给出的资源代码,将其中的LocalHost改为我的IP地址。同时我和伙伴连接在了同一个网络下,而我作为服务器端,其实什么都没有做……
(2)在充分学习密码学和Java的知识之后,修改给出有关密码学的代码(以凯撒密码作为典例),进行运行。可以正常进行凯撒密码加密。
(3)计算复数的计算器。
(4)实践四:远程有理数计算器的客户端,将实践一中的info1进行修改,就完成了我需要做的了。
(5)在实践五当中我负责制作服务器,在实践一的服务器代码基础上,将中间执行计算的代码进行补充和细化,就可以完成我的内容了。下面是我的源码:(内容不完整,我push在了码云上)
3、实验过程中遇到的问题和解决过程
问题一:在实践一当中,客户端那一边一直无法正确运行,或者运行之后一直没有响应。
问题一解决方法:逐一进行排查,首先将擅自更改的端口号改为8800;第二步,确认彼此的IP地址,我们二人连到了同一个网络下进行操作,我把我此时的IP地址发给了伙伴;第三步,发现了作为服务器的我如果没有运行,那么客户端那边即便运行了也是不会有响应的,必须我先运行,等待客户端方面的运行,我和他的计算机中才会同时出现响应。
其他
这一次的实验量其实是不小的,主要是许多内容都是相当具有磨合性质的,既要求我们能够统合使用、回顾之前的知识(比如有理数、复数的计算器),也需要学习新的知识(接口)。但是这次的五个实践也是层层递进、也体现与伙伴的合作的。本次实验之后,我更加确信了以后的代码学习必须加强交流,也必须找好节奏,切忌随意打乱实践的顺序。
参考资料
1、Java密码学算法
2、《Java和Android编程》