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

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

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

    Terry.Li-彬

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

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      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
    {
        
    /**
         *構(gòu)造函數(shù)說明:       <p>
         *參數(shù)說明:   <p>
        *
    */
        
    public SSLServer()
        {       
            init();
        }
       
        
    /**
        * 方法名稱:init<p>
        * 方法功能:初始化服務Socket            <p>
        * 參數(shù)說明: <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>
        * 方法功能:創(chuàng)建服務器監(jiān)聽            <p>
        * 參數(shù)說明: <p>
        * 返回:void <p>
        * 作者:luoc
        * 日期:2005-6-30
        *
    */
        
    private void newListener()
        {
            (
    new Thread(this)).start();
        }
       
        
    /**
         * 重載方法:run 處理客戶端的請求<p>
         * 參閱:
    @see java.lang.Runnable#run() <p>
         * 參數(shù)說明: <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)
                {
                    
    //讀聯(lián)歡數(shù)據(jù)               
                    if(len==1 && buff[0]==TranTool.DATA_END)//數(shù)據(jù)結(jié)束標志
                        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;
       
        
    //測試函數(shù)
        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 禮物 閱讀(534) 評論(0)  編輯  收藏 所屬分類: CA
    主站蜘蛛池模板: 9i9精品国产免费久久| 亚洲精品高清国产一线久久| 国产精品久久免费| 中文字幕一区二区三区免费视频| 亚洲一级片在线观看| 亚洲AV中文无码字幕色三| 成年在线网站免费观看无广告| 特级做a爰片毛片免费看| 99亚偷拍自图区亚洲| 亚洲经典在线中文字幕| 亚洲AV午夜成人影院老师机影院| 亚洲av午夜成人片精品电影| 日本黄色免费观看| 好男人视频社区精品免费| 日本免费网址大全在线观看| 30岁的女人韩剧免费观看| 无码精品一区二区三区免费视频 | 叮咚影视在线观看免费完整版| 无码人妻一区二区三区免费视频| 亚洲AV无码AV日韩AV网站| 亚洲无码一区二区三区| 无人视频免费观看免费视频 | 免费在线看v网址| 成年在线观看免费人视频草莓| 麻豆国产人免费人成免费视频| 四虎影在线永久免费四虎地址8848aa| 亚洲第一页综合图片自拍| 亚洲日本乱码在线观看| 亚洲精品国产成人专区| 亚洲一级毛片免观看| 国产精品亚洲AV三区| 成人网站免费大全日韩国产| 性无码免费一区二区三区在线| 99久久国产热无码精品免费| 四虎影视免费在线| 亚洲性久久久影院| 亚洲A∨无码无在线观看| 亚洲精品亚洲人成在线播放| 免费无毒a网站在线观看| 久久青草国产免费观看| 久久精品网站免费观看|