20145304 实验五实验报告

实验五 Java网络编程及安全

实验内容

  • 实现TCP网络通讯方式,结对进行实验,一人服务器,一人客户端。
  • 掌握密码技术的使用。

实验步骤(客户端)

  • 1.学习Java网络编程,了解一些网络编程的基本概念,查询服务器电脑的IP地址。

  • 2.产生随机密钥,输入加密:

        KeyGenerator kg=KeyGenerator.getInstance("DESede");
        kg.init(168);
        SecretKey k=kg.generateKey( );
        FileOutputStream  f=new FileOutputStream("key1.dat");
        ObjectOutputStream b=new  ObjectOutputStream(f);
        b.writeObject(k);
        FileInputStream f=new FileInputStream("key1.dat");
	    ObjectInputStream b=new ObjectInputStream(f);
	    Key k=(Key)b.readObject( );
        byte[ ] kb=k.getEncoded( );
        FileOutputStream  f2=new FileOutputStream("keykb1.dat");
	    f2.write(kb);
        // 打印密钥编码中的内容
        for(int i=0;i<kb.length;i++){
             System.out.print(kb[i]+",");
        }
  • 3.建立连接,在Java API中以java.net.Socket类的对象代表网络连接,所以建立客户端网络连接,也就是创建Socket类型的对象,该对象代表网络连接。
        Socket socket = new Socket("172.20.10.4", 1125);
        Socket socket1 = new Socket("172.20.10.4", 1126);
  • 4.交换数据,数据传输功能由Java IO实现。
            //获得从服务器端来的网络输入流
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            //获得从客户端向服务器端输出数据的网络输出流
            PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
            PrintWriter out1 = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
            //创建键盘输入流,以便客户端从键盘上输入信息
            //BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("正在读取文件\n");
            FileInputStream f1 = new FileInputStream("key1.dat");
            FileInputStream f3 = new FileInputStream("SEnc.dat");
            //String str=stdin.readLine(); //从键盘读入待发送的数据
            String str;
            out.println(f1);  //通过网络传送到服务器
            out1.println(f3);
            System.out.print("已发送\n");
            str = in.readLine();//从网络输入流读取结果
            System.out.println("从服务器接收到的结果为:" + str); //输出服务器返回的结果    
        catch (Exception e) {
            System.out.println(e);
        }
		
  • 5.在服务器端通信完成以后,关闭服务器端连接。
       finally{
			//stdin.close();
			//in.close();
			//out.close();
			//socket.close();			
		}

  • 6.结果截图

实验中遇到的问题及解决过程

  • 连接时显示无法成功连接。
    解决方法:
    1.既然没有显示代码错误,问题应该出现在连接的部分;
    2.查看IP地址和端口号,发现IP地址错误;
    3.重新输入IP地址,再运行。

  • 连接时显示java.net.ConnectException: Connection timed out: connect

    解决方法:感觉是连接超时,但一直出现这个问题,换了无线网继续试。

PSP

步骤 耗时 百分比
需求分析 20分钟 12.5%
设计 60分钟 37.5%
代码实现 40分钟 25%
测试 10分钟 6%
分析总结 30分钟 18%

实验体会

通过此次实验,尝试了用Java语言进行加密和解密,服务器和客户端。学习了一些网络编程的知识,通过实践,对其有了更深的印象。

结对伙伴

  • 20145315 http://www.cnblogs.com/5315hejialei/p/5471396.html
    
posted @ 2016-05-08 19:47  20145304刘钦令  阅读(166)  评论(1)    收藏  举报