zoukankan      html  css  js  c++  java
  • 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("正在读取文件
    ");
                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("已发送
    ");
                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
  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    《EffectiveJava中文第二版》 高清PDF下载
    《MoreEffectiveC++中文版》 pdf 下载
    《啊哈c语言》 高清 PDF 下载
  • 原文地址:https://www.cnblogs.com/LLLLLLQL/p/5471337.html
Copyright © 2011-2022 走看看