20199107hxx

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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){}
        }
    }
}

运行结果:

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


然后修改好程序,运行

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);
        }
    }
}

运行结果:

实验中遇到的问题

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

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

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

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

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

git截图

参考资料

posted on 2016-05-08 16:41  20199107hxx  阅读(564)  评论(2编辑  收藏  举报