SocketConnector.java
上传用户:xiekaiwei
上传日期:2015-07-04
资源大小:620k
文件大小:3k
源码类别:

Telnet客户端

开发平台:

Java

  1. /**
  2.  * @(#)SocketConnector.java
  3.  * @author Stephen M. Kennedy
  4.  *
  5.  * Copyright:    Copyright (c) 2001
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License as published by
  9.  * the Free Software Foundation; either version 2, or (at your option)
  10.  * any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this software; see the file COPYING.  If not, write to
  19.  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  20.  * Boston, MA 02111-1307 USA
  21.  *
  22.  */
  23. package org.tn5250j.framework.transport;
  24. import java.net.Socket;
  25. import org.tn5250j.TN5250jConstants;
  26. import org.tn5250j.tools.logging.TN5250jLogger;
  27. public class SocketConnector {
  28.   String sslType = null;
  29.   TN5250jLogger logger;
  30.   /**
  31.    * Creates a new instance that creates a plain socket by default.
  32.    */
  33.   public SocketConnector() {
  34.    logger = TN5250jLogger.getLogger(getClass());
  35.   }
  36.   /**
  37.    * Set the type of SSL connection to use.  Specify null or an empty string
  38.    * to use a plain socket. 
  39.    * @param type The SSL connection type
  40.    * @see org.tn5250j.framework.transport.SSLConstants
  41.    */
  42.   public void setSSLType(String type) {
  43.     sslType = type;
  44.   }
  45.   /**
  46.    * Create a new client Socket to the given destination and port.  If an SSL
  47.    * socket type has not been specified <i>(by setSSLType(String))</i>, then
  48.    * a plain socket will be created.  Otherwise, a new SSL socket of the 
  49.    * specified type will be created.
  50.    * @param destination
  51.    * @param port
  52.    * @return a new client socket, or null if  
  53.    */
  54.   public Socket createSocket(String destination, int port) {
  55.    Socket socket = null;
  56.    Exception ex = null;
  57.   
  58.       if (sslType == null || sslType.trim().length() == 0 || 
  59.        sslType.toUpperCase().equals(TN5250jConstants.SSL_TYPE_NONE)) {
  60.          logger.info("Creating Plain Socket");
  61.         try {
  62. // Use Socket Constructor!!! SocketFactory for jdk 1.4
  63. socket = new Socket(destination,port);
  64. } catch (Exception e) {
  65. ex = e;
  66. }
  67.       } else {  //SSL SOCKET
  68.     logger.info("Creating SSL ["+sslType+"] Socket");      
  69.       
  70.        SSLInterface sslIf = null;
  71.       
  72.        String sslImplClassName = 
  73.        "org.tn5250j.framework.transport.SSL.SSLImplementation";  
  74. try {
  75. Class c = Class.forName(sslImplClassName);
  76. sslIf = (SSLInterface)c.newInstance();
  77. } catch (Exception e) {
  78. ex = new Exception("Failed to create SSLInterface Instance. " +
  79. "Message is ["+e.getMessage()+"]");
  80. }
  81.        if (sslIf != null) {
  82.        sslIf.init(sslType);
  83.        socket = sslIf.createSSLSocket(destination,port);
  84.        }
  85.       }
  86.       if (ex != null) {
  87.        logger.error(ex);
  88.       }
  89.       if (socket == null) {
  90.        logger.info("No socket was created");
  91.       }
  92.       return socket;
  93.   }
  94.       
  95.       
  96. }