Class FTPControlSocket

java.lang.Object
com.enterprisedt.net.ftp.FTPControlSocket

public class FTPControlSocket extends Object
Supports client-side FTP operations
Version:
$Revision$
Author:
Bruce Blackshaw
  • Field Details

    • cvsId

      public static final String cvsId
      Revision control id
      See Also:
    • MAX_ACTIVE_RETRY

      public static final int MAX_ACTIVE_RETRY
      Maximum number of auto retries in active mode
      See Also:
    • CONTROL_PORT

      public static final int CONTROL_PORT
      The default and standard control port number for FTP
      See Also:
    • EPSV_START

      protected static final String EPSV_START
      Start of PASV reply in IPv6
      See Also:
    • EPSV_END

      protected static final String EPSV_END
      End of PASV reply in IPv6
      See Also:
    • listenOnAllInterfaces

      protected boolean listenOnAllInterfaces
      Listen to all interfaces in active mode
    • controlSock

      protected StreamSocket controlSock
      The underlying socket.
    • writer

      protected Writer writer
      The write that writes to the control socket
    • reader

      protected Reader reader
      The reader that reads control data from the control socket
    • forcedActiveIP

      protected String forcedActiveIP
      IP address we force PORT to send - useful with certain NAT configurations
    • remoteAddr

      protected InetAddress remoteAddr
      The remote address to connect to
    • autoPassiveIPSubstitution

      protected boolean autoPassiveIPSubstitution
      If true, uses the original host IP if an internal IP address is returned by the server in PASV mode
    • dataChannelCallback

      protected DataChannelCallback dataChannelCallback
      Pasv callback method
  • Constructor Details

    • FTPControlSocket

      protected FTPControlSocket(InetAddress remoteAddr, int controlPort, int timeout, String encoding, FTPMessageListener messageListener) throws IOException, FTPException
      Constructor. Performs TCP connection and sets up reader/writer. Allows different control port to be used
      Parameters:
      remoteAddr - Remote inet address
      controlPort - port for control stream
      timeout - the length of the timeout, in milliseconds
      encoding - character encoding used for data
      messageListener - listens for messages
      Throws:
      IOException
      FTPException
    • FTPControlSocket

      protected FTPControlSocket(InetAddress remoteAddr, StreamSocket controlSock, int timeout, String encoding, FTPMessageListener messageListener) throws IOException, FTPException
      Constructs a new FTPControlSocket using the given Socket object.
      Parameters:
      remoteAddr - the remote address
      controlSock - Socket to be used.
      timeout - Timeout to be used.
      encoding - character encoding used for data
      messageListener - listens for messages
      Throws:
      IOException - Thrown if no connection response could be read from the server.
      FTPException - Thrown if the incorrect connection response was sent by the server.
  • Method Details

    • setAutoPassiveIPSubstitution

      protected void setAutoPassiveIPSubstitution(boolean autoPassiveIPSubstitution)
      Set automatic substitution of the remote host IP on if in passive mode
      Parameters:
      autoPassiveIPSubstitution - true if set to on, false otherwise
    • initStreams

      protected void initStreams() throws IOException
      Initialize the reader/writer streams for this connection.
      Throws:
      IOException
    • isSecureMode

      public boolean isSecureMode()
      Is this socket in secure mode?
      Returns:
      true if secure mode
    • close

      public void close() throws IOException
      Close the socket
      Throws:
      IOException
    • logout

      public void logout() throws IOException
      Quit this FTP session and clean up.
      Throws:
      IOException
    • toByteArray

      protected byte[] toByteArray(int value)
      Convert a short into a byte array
      Parameters:
      value - value to convert
      Returns:
      a byte array
    • setActivePortRange

      public void setActivePortRange(int lowest, int highest)
      Set the port number range for active mode
      Parameters:
      lowest - lowest port number in range
      highest - highest port number in range
    • setDataPort

      protected void setDataPort(InetAddress host, int portNo) throws IOException, FTPException
      Sets the data port on the server, that is, sends a PORT command.
      Parameters:
      host - the local host the server will connect to
      portNo - the port number to connect to
      Throws:
      IOException
      FTPException
    • createDataSocketPASV

      protected com.enterprisedt.net.ftp.internal.FTPDataSocket createDataSocketPASV() throws IOException, FTPException
      Request a data socket be created on the server, connect to it and return our connected socket.
      Returns:
      connected data socket
      Throws:
      IOException
      FTPException
    • usingProxy

      protected boolean usingProxy()
    • newPassiveDataSocket

      protected com.enterprisedt.net.ftp.internal.FTPDataSocket newPassiveDataSocket(String remoteHost, int port) throws IOException
      Constructs a new FTPDataSocket object (client mode) and connect to the given remote host and port number.
      Parameters:
      remoteHost - Remote host to connect to.
      port - Remote port to connect to.
      Returns:
      A new FTPDataSocket object (client mode) which is connected to the given server.
      Throws:
      IOException - Thrown if no TCP/IP connection could be made.
    • newActiveDataSocket

      protected com.enterprisedt.net.ftp.internal.FTPDataSocket newActiveDataSocket(int port) throws IOException
      Constructs a new FTPDataSocket object (server mode) which will listen on the given port number.
      Parameters:
      port - Remote port to listen on.
      Returns:
      A new FTPDataSocket object (server mode) which is configured to listen on the given port.
      Throws:
      IOException - Thrown if an error occurred when creating the socket.
    • sendCommand

      public FTPReply sendCommand(String command) throws IOException, IOException, FTPException
      Send a command to the FTP server and return the server's reply as a structured reply object
      Parameters:
      command - command to send
      Returns:
      reply to the supplied command
      Throws:
      IOException
      FTPException
    • validateReply

      public FTPReply validateReply(String reply, String[] expectedReplyCodes) throws IOException, FTPException
      Validate the response the host has supplied against the expected reply. If we get an unexpected reply we throw an exception, setting the message to that returned by the FTP server
      Parameters:
      reply - the entire reply string we received
      expectedReplyCodes - array of expected replies
      Returns:
      an object encapsulating the server's reply
      Throws:
      IOException
      FTPException
    • validateReply

      public FTPReply validateReply(FTPReply reply, String[] expectedReplyCodes) throws FTPException
      Validate the response the host has supplied against the expected reply. If we get an unexpected reply we throw an exception, setting the message to that returned by the FTP server
      Parameters:
      reply - reply object
      expectedReplyCodes - array of expected replies
      Returns:
      reply object
      Throws:
      FTPException
    • validateReply

      public FTPReply validateReply(FTPReply reply, String expectedReplyCode) throws FTPException
      Validate the response the host has supplied against the expected reply. If we get an unexpected reply we throw an exception, setting the message to that returned by the FTP server
      Parameters:
      reply - reply object
      expectedReplyCode - expected reply
      Returns:
      reply object
      Throws:
      FTPException
    • isIPV6

      protected boolean isIPV6(InetAddress host)
      Is this an IPV6 InetAddress?
      Parameters:
      host - InetAddress to test
      Returns:
      true if IPV6, false otherwise