edtFTPj

com.enterprisedt.net.ftp
Class FTPControlSocket

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

public class FTPControlSocket
extends Object

Supports client-side FTP operations

Version:
$Revision: 1.37 $
Author:
Bruce Blackshaw

Field Summary
protected  boolean autoPassiveIPSubstitution
          If true, uses the original host IP if an internal IP address is returned by the server in PASV mode
static int CONTROL_PORT
          The default and standard control port number for FTP
protected  Socket controlSock
          The underlying socket.
static String cvsId
          Revision control id
protected  String forcedActiveIP
          IP address we force PORT to send - useful with certain NAT configurations
protected  BufferedReader reader
          The reader that reads control data from the control socket
protected  InetAddress remoteAddr
          The remote address to connect to
protected  Writer writer
          The write that writes to the control socket
 
Constructor Summary
protected FTPControlSocket(InetAddress remoteAddr, int controlPort, int timeout, String encoding, FTPMessageListener messageListener)
          Constructor.
protected FTPControlSocket(InetAddress remoteAddr, Socket controlSock, int timeout, String encoding, FTPMessageListener messageListener)
          Constructs a new FTPControlSocket using the given Socket object.
 
Method Summary
 void close()
          Close the socket
protected  FTPDataSocket createDataSocketPASV()
          Request a data socket be created on the server, connect to it and return our connected socket.
protected  void initStreams()
          Initialize the reader/writer streams for this connection.
 void logout()
          Quit this FTP session and clean up.
protected  FTPDataSocket newActiveDataSocket(int port)
          Constructs a new FTPDataSocket object (server mode) which will listen on the given port number.
protected  FTPDataSocket newPassiveDataSocket(String remoteHost, int port)
          Constructs a new FTPDataSocket object (client mode) and connect to the given remote host and port number.
 FTPReply sendCommand(String command)
          Send a command to the FTP server and return the server's reply as a structured reply object
 void setActivePortRange(int lowest, int highest)
          Set the port number range for active mode
protected  void setAutoPassiveIPSubstitution(boolean autoPassiveIPSubstitution)
          Set automatic substitution of the remote host IP on if in passive mode
protected  void setDataPort(InetAddress host, short portNo)
          Sets the data port on the server, that is, sends a PORT command.
protected  byte[] toByteArray(short value)
          Convert a short into a byte array
 FTPReply validateReply(FTPReply reply, String expectedReplyCode)
          Validate the response the host has supplied against the expected reply.
 FTPReply validateReply(FTPReply reply, String[] expectedReplyCodes)
          Validate the response the host has supplied against the expected reply.
 FTPReply validateReply(String reply, String[] expectedReplyCodes)
          Validate the response the host has supplied against the expected reply.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cvsId

public static final String cvsId
Revision control id

See Also:
Constant Field Values

CONTROL_PORT

public static final int CONTROL_PORT
The default and standard control port number for FTP

See Also:
Constant Field Values

controlSock

protected Socket controlSock
The underlying socket.


writer

protected Writer writer
The write that writes to the control socket


reader

protected BufferedReader 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

Constructor Detail

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,
                           Socket 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 Detail

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

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(short 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,
                           short 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 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

newPassiveDataSocket

protected 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 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
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

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

edtFTPj

Copyright © 2000-2007 Enterprise Distributed Technologies. All Rights Reserved.