java程序设计实验五答案_20145120 《Java程序设计》实验五实验报告

20145120 《Java程序设计》实验五实验报告

实验名称:Java网络编程

实验内容:

1.掌握Socket程序的编写;

2.掌握密码技术的使用;

3.设计安全传输系统。

实验内容、步骤

PSP

步骤

耗时

百分比

需求分析

0.5

10%

设计

1

20%

代码实现

2.5

50%

测试

0.5

10%

分析总结

0.5

10%

实验步骤

这次我还是和20145122程智崟组队,我负责服务器,程智崟负责客户端。

我们先从简单的开始尝试,客户端和服务器从火之光博客最简单的那个改进,再对老师给的凯撒密码进行修改,使得它在客户端和服务器的程序里可以传值调用

package experiment.experiment5;

/**

* Created by lenovo on 2016/5/6.

*/

import java.io.*;

import java.net.*;

import java.util.Scanner;

public class Server {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

ServerSocket serverSocket = null;

Socket socket = null;

OutputStream os = null;

InputStream is = null;

//监听端口号

int port = 10000;

try {

//建立连接

serverSocket = new ServerSocket(port);

//获得连接

socket = serverSocket.accept();

//接收客户端发送内容

is = socket.getInputStream();

byte[] b = new byte[1024];

int n = is.read(b);

//输出

System.out.println("客户端发送内容为:" + new String(b,0,n));

String m[] = new String[2];

m[0] = new String(b,0,n);

System.out.println("请输入解密密钥:");

m[1] = scanner.nextLine();

String data = Caesar.main(m);

//向客户端发送反馈内容

os = socket.getOutputStream();

os.write(data.getBytes());

} catch (Exception e) {

e.printStackTrace();

}finally{

try{

//关闭流和连接

os.close();

is.close();

socket.close();

serverSocket.close();

}catch(Exception e){}

}

}

}

运行结果:

eaa2aff0f5376527f324be102e4b84c2.png

3e02da0b990c836c69ad03e948cb457f.png

成功之后我们再尝试了使用RSA算法,这次客户端、服务器等都是在老师给的程序的基础上修改的

先试一下修改是否达到预定效果

6f097f53e574506f04bc1d06d54b5528.png

14cbd6b7de57de1c6d49d3971a5c29b7.png

然后修改好程序,运行

package experiment.experiment5;

/**

* Created by lenovo on 2016/5/8.

*/

import java.net.*;

import java.io.*;

public class Server1{

public static void main(String srgs[]) {

ServerSocket sc = null;

Socket socket=null;

try {

sc= new ServerSocket(14512);//创建服务器套接字

System.out.println("端口号:" + sc.getLocalPort());

System.out.println("服务器已经启动...");

socket = sc.accept(); //等待客户端连接

System.out.println("已经建立连接");

//获得网络输入流对象的引用

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

获得网络输出流对象的引用

PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);

String aline=in.readLine();//读取客户端传送来的数据

System.out.println("从客户端接收到信息为:"+aline);

String m = Dec_RSA.main(aline);

//通过网络输出流返回结果给客户端

out.println("Echo:" + m);

out.close();

in.close();

sc.close();

} catch (Exception e) {

System.out.println(e);

}

}

}

运行结果:

420fb1144724b8757e03d8fe70032992.png

实验中遇到的问题

1.我打开实验五发现是实验楼主页,一开始不明所以,做完了才知道我没加java的私有课程

2.开始的时候对调用其他类的函数还不熟悉,写的是Caesar(),后来才想到是Caesar.main()

3.本来想试试DES的,但是找不到DES在哪里

4.一开始以为客户端和服务器需要两台机,后来发现一台也可以的

5..bat原来不是和.java在一起的,是要放project第一层里的

git截图

a4a33727dd408388e1e0fcdf11dcbb2e.png

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java程序设计》课程实验指导书程序代码(答案)(实验Java的异常处理),个人原创,仅供参考与交流。 希望多多交流,共同进步! 实验 Java的异常处理 一、实验目的: 理解 java 语言中独特的异常处理机制; 掌握异常处理方法; 正确地使用捕获异常和声明抛弃异常的两种异常处理的方法; 了解自定义异常类的使用; 理解抛出异常和声明抛出异常的区别与联系; 二、实验内容: 1. 从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。 2.写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。 3.自定义类Sanj,其中有成员 x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。 三、实验要求: 1. 通过实验掌握捕获异常和声明抛弃异常的两种异常处理的方法; 2. 程序必须能够捕获Integer.parseInt()产生的异常并作相应的处理; 3. 程序必须能够将处理的相应的信息输出出来; 4. 写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。(附运行界面、源代码)。 四、实验步骤: 1. (第1题) 使用try…..catch…. finally语句对Integer.parseInt()产生的异常进行捕获处理; 2. (第2题) 定义方法void sanjiao(int a,int b,int c)中,不符合条件则抛出异常(if a+b<=c(或a+c<=b,b+c<=a) then throw new IllegalArgumentException(),),再定义main方法,调用此方法,用try…..catch…. finally语句并捕获异常; 3. (第3题) 定义三角形类及相应的方法, 在定义的方法中对不符合条件则抛出异常(如上题) ,再定义main方法,对正确的数据输出正确信息,否则捕获异常; 、自做实验 1.参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。[提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入 abc 测试] public class StringIndexOutOf{ public static void main(String args[]){ System.out.println("字符串索引越界异常"); String str=args[0]; System.out.println(“第四个字符为 ”+str.charAt(3)); int aa=Integer.parseInt(args[0]); System.out.println(“平方为 ”+aa*aa); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值