<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    /********************************************************************
     * 項目名稱    :rochoc   <p>
     * 包名稱      :rochoc.net.security <p>
     * 文件名稱    :SSLServer   <p>
     * 編寫者      : LuckyStar    <p>
     * 編寫日期    :2008-2-13    <p>
     * 程序功能(類)描述 :用于安全通訊的服務Socket,采用java中的SSLServerSocket<p>
     *
     * 程序變更日期   :
     * 變更作者    :
     * 變更說明    :
    *******************************************************************
    */
    package rochoc.net.security;

    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.security.KeyStore;
    import java.security.SecureRandom;

    import javax.net.ssl.KeyManagerFactory;
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.SSLServerSocket;
    import javax.net.ssl.TrustManagerFactory;

    /**
     * 類名:SSLServer  <p>
     * 類描述:安全通訊的服務端 <p>
     * 編寫者 :luoc<p>
     * 編寫日期 :2005-6-30<p>
     * 主要public成員變量:<p>
     * 主要public方法:   <p>
     *
    */

    public class SSLServer implements Runnable
    {
        
    /**
         *構造函數說明:       <p>
         *參數說明:   <p>
        *
    */
        
    public SSLServer()
        {       
            init();
        }
       
        
    /**
        * 方法名稱:init<p>
        * 方法功能:初始化服務Socket            <p>
        * 參數說明: <p>
        * 返回:void <p>
        * 作者:luoc
        * 日期:2005-6-30
        *
    */
        
    public void init()
        {
            String type
    ="TLS";//類型
            String keyf="..\\key\\srvstore";//key文件路徑
            String trustf="..\\key\\mytrust";
            String pass
    ="123456";//密碼
            int port=2001;//端口
            try
            {
                
    //初始化上下文
                SSLContext ctx=SSLContext.getInstance(type);
                KeyManagerFactory kmf
    =KeyManagerFactory.getInstance("SunX509");
                TrustManagerFactory tmf
    =TrustManagerFactory.getInstance("SunX509");           
                KeyStore ks
    =KeyStore.getInstance("JKS");
                KeyStore tks
    =KeyStore.getInstance("JKS");
                
    //載入keystore
                ks.load(new FileInputStream(keyf),pass.toCharArray());
                tks.load(
    new FileInputStream(trustf),pass.toCharArray());
                kmf.init(ks,pass.toCharArray());
                tmf.init(tks);
                ctx.init(kmf.getKeyManagers(),tmf.getTrustManagers(),
    new SecureRandom());
                ss
    =(SSLServerSocket)ctx.getServerSocketFactory().createServerSocket(port);
                ss.setNeedClientAuth(
    true);//客戶端要認證
            }catch (Exception e) {
          e.printStackTrace();
         }       
        }
       
        
    /**
        * 方法名稱:newListener<p>
        * 方法功能:創建服務器監聽            <p>
        * 參數說明: <p>
        * 返回:void <p>
        * 作者:luoc
        * 日期:2005-6-30
        *
    */
        
    private void newListener()
        {
            (
    new Thread(this)).start();
        }
       
        
    /**
         * 重載方法:run 處理客戶端的請求<p>
         * 參閱:
    @see java.lang.Runnable#run() <p>
         * 參數說明: <p>
        *
    */
        
    public void run()
        {
            Socket socket
    =null;
            
    //accept a connection
            try
            {
                socket
    =ss.accept();
            }
    catch(IOException e)
            {
                System.out.println(
    "Class Server died: " + e.getMessage());
             e.printStackTrace();
             
    return;
            }
           
            
    //create a new thread to accept the next connection
            newListener();
           
            
    //process connection
            try
            {
                OutputStream out
    =socket.getOutputStream();
                InputStream in
    =socket.getInputStream();
                
    //read data from client    
                byte buff[]=new byte [512]; 
                
    byte data[]=new byte [1024];
                System.out.println(
    "buff len="+buff.length);
                
    int len=0;
                
    int startpos=0;
                
    while((len=in.read(buff))!=-1)
                {
                    
    //讀聯歡數據               
                    if(len==1 && buff[0]==TranTool.DATA_END)//數據結束標志
                        break;
                    data
    =TranTool.byteDynExt(data,buff,len,startpos);
                    System.out.println(
    "read len:"+len+" data:["+new String(buff,0,len)+"]");
                    startpos
    +=len;
                }              
                System.out.println(
    "recv from client:[");                                  
                System.out.print(
    new String(data,0,startpos));           
                System.out.println(
    "] data end.");
                
    //send message to client
                out.write((startpos+" data success receive.").getBytes());
                out.write(TranTool.DATA_END);
                System.out.println(
    "success echo is send.");
                out.flush();
            }
    catch(IOException e)
            {
                e.printStackTrace();
          
    return;
            }
    finally
            {
                
    try
                {
              socket.close();
             } 
    catch (IOException e)
             {}
            }
        }   
       
        
    /*全局變量*/  
        SSLServerSocket ss
    =null;
       
        
    //測試函數
        public static void main(String args[])
        {
            System.out.println(
    "init SSLServer");
            SSLServer srv
    =new SSLServer();
            
    new Thread(srv).start();      
            System.out.println(
    "SSLServer listener begin.");
        }
    }
    posted on 2008-02-13 22:08 禮物 閱讀(535) 評論(0)  編輯  收藏 所屬分類: CA
    主站蜘蛛池模板: 午夜亚洲国产理论片二级港台二级| 亚洲狠狠久久综合一区77777| 成人国产网站v片免费观看| 亚洲中文字幕无码不卡电影| 日本免费人成网ww555在线| 亚洲一卡2卡4卡5卡6卡残暴在线| 免费萌白酱国产一区二区| 免费黄色电影在线观看| 亚洲另类无码专区丝袜| 亚洲日本va在线视频观看| 亚洲免费黄色网址| 青青青亚洲精品国产| 在线免费不卡视频| 国产一级黄片儿免费看| 精品亚洲aⅴ在线观看| 国产一级理论免费版| 免费无码av片在线观看| 亚洲精品成人网久久久久久| 精品国产污污免费网站| 亚洲精品第一综合99久久| 亚洲福利中文字幕在线网址| 外国成人网在线观看免费视频| 国产精品亚洲精品| 四虎影视永久免费视频观看| 亚洲av永久中文无码精品综合 | 亚洲美女aⅴ久久久91| 永久免费AV无码网站在线观看| 尤物视频在线免费观看| 亚洲最大福利视频网站| 国产午夜免费福利红片| 叮咚影视在线观看免费完整版| 亚洲理论精品午夜电影| 亚洲第一成人影院| 久久久久高潮毛片免费全部播放 | 丁香五月亚洲综合深深爱| 日韩在线播放全免费| 一级毛片免费在线播放| 久久久久亚洲AV无码永不| 亚洲高清国产拍精品青青草原 | 免费视频精品一区二区| 亚洲激情在线观看|