• 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
  • 相关阅读:
    矩阵快速幂的学习(系统的学习)
    hdu3949(线性基,求第k小的异或和
    牛客网训练赛26D(xor)
    牛客网练习赛26B(简单的dp)
    Carryon的字符串
    string的各种函数(系统学习)
    约瑟夫问题(vector的使用)
    vector的学习(系统的学习)
    CodeForces
    POJ-3624-背包问题
  • 原文地址:https://www.cnblogs.com/LLLLLLQL/p/5471337.html
Copyright © 2020-2023  润新知