成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java Socket實戰之五:使用加密協議傳輸對象

開發 后端
前面幾篇博文提到了Socket中一些常用的用法,但是對于一些有安全要求的應用就需要加密傳輸的數據,此時就需要用到SSLSocket了。

前面幾篇博文提到了Socket中一些常用的用法,但是對于一些有安全要求的應用就需要加密傳輸的數據,此時就需要用到SSLSocket了。

還是一樣需要一個實現了java.io.Serializable接口的簡單Java對象:

  1. package com.googlecode.garbagecan.test.socket.ssl;  
  2.  
  3. public class User implements java.io.Serializable {  
  4.     private static final long serialVersionUID = 1L;  
  5.     private String name;  
  6.     private String password;  
  7.  
  8.     public User() {  
  9.           
  10.     }  
  11.       
  12.     public User(String name, String password) {  
  13.         this.name = name;  
  14.         this.password = password;  
  15.     }  
  16.       
  17.     public String getName() {  
  18.         return name;  
  19.     }  
  20.  
  21.     public void setName(String name) {  
  22.         this.name = name;  
  23.     }  
  24.  
  25.     public String getPassword() {  
  26.         return password;  
  27.     }  
  28.  
  29.     public void setPassword(String password) {  
  30.         this.password = password;  
  31.     }  
  32.       

SSL Server類,這里需要用到ServerSocketFactory類來創建SSLServerSocket類實例,然后在通過SSLServerSocket來獲取SSLSocket實例,這里考慮到面向對象中的面向接口編程的理念,所以代碼中并沒有出現SSLServerSocket和SSLSocket,而是用了他們的父類ServerSocket和Socket。在獲取到ServerSocket和Socket實例以后,剩下的代碼就和不使用加密方式一樣了。

  1. package com.googlecode.garbagecan.test.socket.ssl;  
  2.  
  3. import java.io.BufferedInputStream;  
  4. import java.io.IOException;  
  5. import java.io.ObjectInputStream;  
  6. import java.io.ObjectOutputStream;  
  7. import java.net.ServerSocket;  
  8. import java.net.Socket;  
  9. import java.util.logging.Level;  
  10. import java.util.logging.Logger;  
  11.  
  12. import javax.net.ServerSocketFactory;  
  13. import javax.net.ssl.SSLServerSocketFactory;  
  14.  
  15. public class MyServer {  
  16.       
  17.     private final static Logger logger = Logger.getLogger(MyServer.class.getName());  
  18.       
  19.     public static void main(String[] args) {  
  20.         try {  
  21.             ServerSocketFactory factory = SSLServerSocketFactory.getDefault();  
  22.             ServerSocket server = factory.createServerSocket(10000);  
  23.               
  24.             while (true) {  
  25.                 Socket socket = server.accept();  
  26.                 invoke(socket);  
  27.             }  
  28.         } catch (Exception ex) {  
  29.             ex.printStackTrace();  
  30.         }  
  31.     }  
  32.       
  33.     private static void invoke(final Socket socket) throws IOException {  
  34.         new Thread(new Runnable() {  
  35.             public void run() {  
  36.                 ObjectInputStream is = null;  
  37.                 ObjectOutputStream os = null;  
  38.                 try {  
  39.                     is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));  
  40.                     os = new ObjectOutputStream(socket.getOutputStream());  
  41.  
  42.                     Object obj = is.readObject();  
  43.                     User user = (User)obj;  
  44.                     System.out.println("user: " + user.getName() + "/" + user.getPassword());  
  45.  
  46.                     user.setName(user.getName() + "_new");  
  47.                     user.setPassword(user.getPassword() + "_new");  
  48.  
  49.                     os.writeObject(user);  
  50.                     os.flush();  
  51.                 } catch (IOException ex) {  
  52.                     logger.log(Level.SEVERE, null, ex);  
  53.                 } catch(ClassNotFoundException ex) {  
  54.                     logger.log(Level.SEVERE, null, ex);  
  55.                 } finally {  
  56.                     try {  
  57.                         is.close();  
  58.                     } catch(Exception ex) {}  
  59.                     try {  
  60.                         os.close();  
  61.                     } catch(Exception ex) {}  
  62.                     try {  
  63.                         socket.close();  
  64.                     } catch(Exception ex) {}  
  65.                 }  
  66.             }  
  67.         }).start();  
  68.     }  

SSL Client類和SSL Server類類似,只是將其中獲取Socket的方式有所變化,其余的代碼也和不使用加密方式一樣。

  1. package com.googlecode.garbagecan.test.socket.ssl;  
  2.  
  3. import java.io.BufferedInputStream;  
  4. import java.io.IOException;  
  5. import java.io.ObjectInputStream;  
  6. import java.io.ObjectOutputStream;  
  7. import java.net.Socket;  
  8. import java.util.logging.Level;  
  9. import java.util.logging.Logger;  
  10.  
  11. import javax.net.SocketFactory;  
  12. import javax.net.ssl.SSLSocketFactory;  
  13.  
  14. public class MyClient {  
  15.       
  16. private final static Logger logger = Logger.getLogger(MyClient.class.getName());  
  17.  
  18.     public static void main(String[] args) throws Exception {  
  19.         for (int i = 0; i < 100; i++) {  
  20.             Socket socket = null;  
  21.             ObjectOutputStream os = null;  
  22.             ObjectInputStream is = null;  
  23.               
  24.             try {  
  25.                 SocketFactory factory = SSLSocketFactory.getDefault();  
  26.                 socket = factory.createSocket("localhost"10000);  
  27.       
  28.                 os = new ObjectOutputStream(socket.getOutputStream());  
  29.                 User user = new User("user_" + i, "password_" + i);  
  30.                 os.writeObject(user);  
  31.                 os.flush();  
  32.                   
  33.                 is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));  
  34.                 Object obj = is.readObject();  
  35.                 if (obj != null) {  
  36.                     user = (User)obj;  
  37.                     System.out.println("user: " + user.getName() + "/" + user.getPassword());  
  38.                 }  
  39.             } catch(IOException ex) {  
  40.                 logger.log(Level.SEVERE, null, ex);  
  41.             } finally {  
  42.                 try {  
  43.                     is.close();  
  44.                 } catch(Exception ex) {}  
  45.                 try {  
  46.                     os.close();  
  47.                 } catch(Exception ex) {}  
  48.                 try {  
  49.                     socket.close();  
  50.                 } catch(Exception ex) {}  
  51.             }  
  52.         }  
  53.     }  

代碼寫完了,下面就需要產生keystore文件了,運行下面的命令

  1. keytool -genkey -alias mysocket -keyalg RSA -keystore mysocket.jks 

在提示輸入項中,密碼項自己給定,其它都不改直接回車,這里我使用的密碼是“mysocket”。

運行Server

  1. java -Djavax.net.ssl.keyStore=mysocket.jks -Djavax.net.ssl.keyStorePassword=mysocket com.googlecode.garbagecan.test.socket.ssl.MyServer 

運行Client

  1. java -Djavax.net.ssl.trustStore=mysocket.jks  -Djavax.net.ssl.trustStorePassword=mysocket com.googlecode.garbagecan.test.socket.ssl.MyClient 

原文鏈接:http://blog.csdn.net/kongxx/article/details/7259837

【編輯推薦】

  1. Java Socket實戰之四:傳輸壓縮對象
  2. Java Socket實戰之三:傳輸對象
  3. Java Socket實戰之二:多線程通信
  4. Java Socket實戰之一:單線程通信
  5. Java多線程之消費者生產者模式
責任編輯:林師授 來源: kongxx的博客
相關推薦

2012-02-15 10:40:37

JavaJava Socket

2012-02-15 10:37:38

JavaJava Socket

2010-04-01 16:03:15

無線加密協議無線網卡

2010-04-01 16:09:17

無線加密協議兼容

2010-07-13 14:41:14

2010-09-27 16:43:57

2012-05-03 10:55:51

ApacheMINAJava

2010-07-07 10:31:45

2009-11-07 13:40:07

2010-07-26 09:47:14

2010-09-07 10:57:54

2010-06-28 14:38:12

FTP協議

2012-05-03 11:35:56

ApacheCXFJava

2009-01-11 09:24:00

2010-09-29 08:31:23

2024-02-23 18:33:48

2012-05-07 14:15:41

ApacheCXFJava

2022-02-17 15:41:31

微軟Windows 11加密協議

2010-06-28 11:15:45

BitTorrent協

2023-09-21 10:28:22

HTTPS加密協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久成人一区二区三区 | 国产永久免费 | 亚洲在线一区二区 | 国产精品99久久久久久久久久久久 | 男女污污动态图 | 一区二区三区国产精品 | 亚洲精品成人 | 久久久av中文字幕 | 91福利影院 | www.日韩高清 | 日韩欧美一区二区三区在线播放 | 精品欧美二区 | 国产午夜在线 | 成人免费视频 | 久久久久久综合 | 国产激情视频在线 | 亚洲精品乱码久久久久久久久 | 欧美成人精品一区二区男人看 | 国产二区视频 | 91精品国产综合久久久密闭 | 狠狠久久综合 | 欧美成人精品激情在线观看 | 毛片免费观看视频 | 一区二区高清 | 免费观看毛片 | 91精品久久久久久久久久 | 国产免费av在线 | 黑人巨大精品欧美黑白配亚洲 | 日本三级全黄三级三级三级口周 | 黄色免费av| 国产999精品久久久 精品三级在线观看 | 韩国精品一区二区三区 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 一区二区三区免费 | 欧美成人免费在线视频 | 在线国产一区二区 | 高清国产一区二区 | 久久久蜜桃一区二区人 | 日韩成人影院在线观看 | 精品一区二区在线观看 | 久久不射电影网 |