国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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-06-28 14:38:12

FTP協議

2010-09-07 10:57:54

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加密協議

2023-09-21 10:28:22

HTTPS加密協議

2010-01-07 16:29:33

使用Json
點贊
收藏

51CTO技術棧公眾號

狠狠色狠色综合曰曰| 视频亚洲一区二区| 哺乳一区二区三区中文视频| 97香蕉久久| 五月婷婷另类国产| 亚洲国产一区二区三区在线播放| 超碰成人久久| 91网站在线观看视频| 精品国产91久久久久久久妲己| 超碰精品一区二区三区乱码| 久久免费一区| 午夜在线网站| 精品成人自拍视频| 绯色av一区| 国产香蕉97碰碰久久人人| 欧美日韩国产页| 日韩在线观看免费网站| 欧美大香线蕉线伊人久久国产精品| 男女视频网站免费观看| youjizz亚洲| 国产亚洲欧美日韩日本| 日韩免费成人网| 九九久久精品视频 | 亚洲欧美视频一区| 欧美性生活久久| 7777精品视频| www国产精品内射老熟女| 亚洲人体视频| 精品一区二区三区免费毛片爱| 欧美一级视频精品观看| 国内视频一区二区| 最近最好的中文字幕2019免费| 女人抽搐喷水高潮国产精品| 超碰国产在线观看| 精品av导航| 亚洲欧洲性图库| 久久男人av资源网站| 欧美精品性生活| 欧美综合精品| 色哟哟欧美精品| 精品欧美一区二区久久久伦 | 韩国欧美一区二区| 免费久久精品视频| 在线播放91灌醉迷j高跟美女| 日本高清视频一区二区三区| av手机免费在线观看| 国产精品一级二级三级| 久久躁狠狠躁夜夜爽| 毛片免费在线观看| 色综合久久影院| 性色av一区二区三区在线观看| 欧美一区二区啪啪| 国产精品女人久久久久久| 免费av网页| 国产日韩一区二区三区在线| 日韩精品在线视频| 热99在线观看| 国产毛片一区| 久久av.com| se在线电影| 国语自产精品视频在线看8查询8| 亚洲日本免费电影| 欧美日韩国产一二| 高清免费观看在线| 亚洲精品欧美| 久久人人爽人人爽爽久久| 在线观看黄色片| 成人午夜视频福利| 91青青草免费在线看| 91精品店在线| 欧美高清精品3d| 九九热99久久久国产盗摄| 岛国精品一区二区| 国产亚洲精品超碰| 国产这里只有精品| 日韩精品第二页| 欧美日韩视频在线一区二区| 欧美伦理片在线观看| 日韩不卡一二三区| 成人中文字幕+乱码+中文字幕| 五月亚洲婷婷| 极品日韩av| 成人国产精品入口免费视频| 色老太综合网| 91麻豆123| 不卡一卡2卡3卡4卡精品在| 国产精品一区二区三区av| 精品人伦一区二区色婷婷| 最色在线观看| 国产精品丝袜久久久久久app| 国产女教师bbwbbwbbw| 今天的高清视频免费播放成人| 成人a级免费视频| 色综合电影网| 国产精品国产自产拍高清av水多| 国产乱肥老妇国产一区二 | 91人人网站| www.色精品| 丁香婷婷综合激情| 国产大陆a不卡| 欧美 亚洲 视频| 99re热视频精品| 精品久久国产字幕高潮| 国产乱子伦一区二区三区国色天香| 在线观看免费黄视频| 久久久久久一区二区三区四区别墅| 亚洲大尺度视频在线观看| 性欧美18+| 五月婷婷久久丁香| 欧美成人片在线| 欧美在线观看视频一区二区| 污视频免费在线看| 欧美日韩亚洲国产一区| 最新在线观看av| 欧美调教在线| 久久久久久毛片免费看| 啪啪亚洲精品| 欧美大片拔萝卜| av中文字幕在线| 7777精品伊人久久久大香线蕉最新版| 在线国产情侣| 亚洲第一视频网| 欧美日韩国产观看视频| 日日骚av一区| 亚洲超碰在线观看| 亚洲欧美另类人妖| 999视频在线观看| 日韩av免费看| 啊啊啊啊啊啊啊视频在线播放| 久久久国产精品午夜一区ai换脸| 国产免费视频传媒| 精品福利樱桃av导航| 日本激情在线观看| 亚洲系列中文字幕| 国产亚洲第一伦理第一区| 国内精品视频在线播放| 精品国产一区二区三区成人影院| 国产黄人亚洲片| 国产欧美在线| 久久在线精品视频| 免费成人美女女| 亚洲一级一级97网| 伊人久久大香线蕉综合网蜜芽 | 996久久国产精品线观看| 热99精品里视频精品| 久久激情久久| 色视频网站在线观看| 欧美一区二区三区啪啪| 无码精品a∨在线观看中文| 亚洲成人福利在线观看| a视频在线播放| 欧美日韩视频免费播放| 在线激情小视频| 69国产精品成人在线播放| 日韩精品一二三| 最新av番号| 久久亚洲综合国产精品99麻豆精品福利| 婷婷综合久久| 日韩欧美精品在线观看视频| 欧美日韩国产天堂| 伊人福利在线| 国产成人精品免费在线| 日韩毛片一二三区| 成人欧美一区二区三区在线观看 | 国产精品成人一区二区三区吃奶| 伦理一区二区| 欧美日韩精品欧美日韩精品一| www国产精品视频| 日韩中文字幕组| 综合电影一区二区三区| 成人亚洲综合天堂| 日韩中文字幕在线视频播放| 久久精品女人| 国产视频网站在线| 国产精品女人网站| 国产精品国产自产拍在线| 欧美色网在线| 波多野结衣激情| 欧美成人性福生活免费看| 888久久久| 青青精品视频播放| 国产精东传媒成人av电影| 久久国产亚洲| 热久久这里只有| 日韩av不卡一区二区| 新版中文字幕在线资源| 国产精品久久久久9999| 一区二区三区日韩欧美精品 | 欧美日韩成人网| 久久美女艺术照精彩视频福利播放| 成人四虎影院| 国产资源第一页| 丰满白嫩尤物一区二区| 亚洲精品无人区| 日韩av片网站| 一区二区三区小说| 国产麻豆一区二区三区精品视频| 淫视频在线观看| 亚洲a∨日韩av高清在线观看| 日本精品免费观看高清观看|