sf::Ftp Class Reference
[Network module]

A FTP client. More...

#include <Ftp.hpp>

Inheritance diagram for sf::Ftp:
sf::NonCopyable

List of all members.

Classes

class  DirectoryResponse
 Specialization of FTP response returning a directory. More...
class  ListingResponse
 Specialization of FTP response returning a filename lisiting. More...
class  Response
 Define a FTP response. More...

Public Types

enum  TransferMode {
  Binary,
  Ascii,
  Ebcdic
}
 

Enumeration of transfer modes.

More...

Public Member Functions

 ~Ftp ()
 Destructor.
Response Connect (const IpAddress &server, unsigned short port=21, Uint32 timeout=0)
 Connect to the specified FTP server.
Response Disconnect ()
 Close the connection with the server.
Response Login ()
 Log in using an anonymous account.
Response Login (const std::string &name, const std::string &password)
 Log in using a username and a password.
Response KeepAlive ()
 Send a null command to keep the connection alive.
DirectoryResponse GetWorkingDirectory ()
 Get the current working directory.
ListingResponse GetDirectoryListing (const std::string &directory="")
 Get the contents of the given directory.
Response ChangeDirectory (const std::string &directory)
 Change the current working directory.
Response ParentDirectory ()
 Go to the parent directory of the current one.
Response CreateDirectory (const std::string &name)
 Create a new directory.
Response DeleteDirectory (const std::string &name)
 Remove an existing directory.
Response RenameFile (const std::string &file, const std::string &newName)
 Rename an existing file.
Response DeleteFile (const std::string &name)
 Remove an existing file.
Response Download (const std::string &remoteFile, const std::string &localPath, TransferMode mode=Binary)
 Download a file from the server.
Response Upload (const std::string &localFile, const std::string &remotePath, TransferMode mode=Binary)
 Upload a file to the server.

Friends

class DataChannel

Detailed Description

A FTP client.

sf::Ftp is a very simple FTP client that allows you to communicate with a FTP server.

The FTP protocol allows you to manipulate a remote file system (list files, upload, download, create, remove, ...).

Using the FTP client consists of 4 parts:

Every command returns a FTP response, which contains the status code as well as a message from the server. Some commands such as GetWorkingDirectory and GetDirectoryListing return additional data, and use a class derived from sf::Ftp::Response to provide this data.

All commands, especially Upload and Download, may take some time to complete. This is important to know if you don't want to block your application while the server is completing the task.

Usage example:

 // Create a new FTP client
 sf::Ftp ftp;

 // Connect to the server
 sf::Ftp::Response response = ftp.Connect("ftp://ftp.myserver.com");
 if (response.IsOk())
     std::cout << "Connected" << std::endl;

 // Log in
 response = ftp.Login("laurent", "dF6Zm89D");
 if (response.IsOk())
     std::cout << "Logged in" << std::endl;

 // Print the working directory
 sf::Ftp::DirectoryResponse directory = ftp.GetWorkingDirectory();
 if (directory.IsOk())
     std::cout << "Working directory: " << directory.GetDirectory() << std::endl;

 // Create a new directory
 response = ftp.CreateDirectory("files");
 if (response.IsOk())
     std::cout << "Created new directory" << std::endl;

 // Upload a file to this new directory
 response = ftp.Upload("local-path/file.txt", "files", sf::Ftp::Ascii);
 if (response.IsOk())
     std::cout << "File uploaded" << std::endl;

 // Disconnect from the server (optional)
 ftp.Disconnect();

Definition at line 45 of file Ftp.hpp.


Member Enumeration Documentation

Enumeration of transfer modes.

Enumerator:
Binary 

Binary mode (file is transfered as a sequence of bytes).

Ascii 

Text mode using ASCII encoding.

Ebcdic 

Text mode using EBCDIC encoding.

Definition at line 53 of file Ftp.hpp.


Constructor & Destructor Documentation

sf::Ftp::~Ftp (  ) 

Destructor.

Automatically closes the connection with the server if it is still opened.


Member Function Documentation

Response sf::Ftp::ChangeDirectory ( const std::string &  directory  ) 

Change the current working directory.

The new directory must be relative to the current one.

Parameters:
directory New working directory
Returns:
Server response to the request
See also:
GetWorkingDirectory, GetDirectoryListing, ParentDirectory
Response sf::Ftp::Connect ( const IpAddress server,
unsigned short  port = 21,
Uint32  timeout = 0 
)

Connect to the specified FTP server.

The port has a default value of 21, which is the standard port used by the FTP protocol. You shouldn't use a different value, unless you really know what you do. This function tries to connect to the server so it may take a while to complete, especially if the server is not reachable. To avoid blocking your application for too long, you can use a timeout. The default value, 0, means that the system timeout will be used (which is usually pretty long).

Parameters:
server Name or address of the FTP server to connect to
port Port used for the connection
timeout Maximum time to wait, in milliseconds
Returns:
Server response to the request
See also:
Disconnect
Response sf::Ftp::CreateDirectory ( const std::string &  name  ) 

Create a new directory.

The new directory is created as a child of the current working directory.

Parameters:
name Name of the directory to create
Returns:
Server response to the request
See also:
DeleteDirectory
Response sf::Ftp::DeleteDirectory ( const std::string &  name  ) 

Remove an existing directory.

The directory to remove must be relative to the current working directory. Use this function with caution, the directory will be removed permanently!

Parameters:
name Name of the directory to remove
Returns:
Server response to the request
See also:
CreateDirectory
Response sf::Ftp::DeleteFile ( const std::string &  name  ) 

Remove an existing file.

The file name must be relative to the current working directory. Use this function with caution, the file will be removed permanently!

Parameters:
name File to remove
Returns:
Server response to the request
See also:
RenameFile
Response sf::Ftp::Disconnect (  ) 

Close the connection with the server.

Returns:
Server response to the request
See also:
Connect
Response sf::Ftp::Download ( const std::string &  remoteFile,
const std::string &  localPath,
TransferMode  mode = Binary 
)

Download a file from the server.

The filename of the distant file is relative to the current working directory of the server, and the local destination path is relative to the current directory of your application.

Parameters:
remoteFile Filename of the distant file to download
localPath Where to put to file on the local computer
mode Transfer mode
Returns:
Server response to the request
See also:
Upload
ListingResponse sf::Ftp::GetDirectoryListing ( const std::string &  directory = ""  ) 

Get the contents of the given directory.

This function retrieves the sub-directories and files contained in the given directory. It is not recursive. The directory parameter is relative to the current working directory.

Parameters:
directory Directory to list
Returns:
Server response to the request
See also:
GetWorkingDirectory, ChangeDirectory, ParentDirectory
DirectoryResponse sf::Ftp::GetWorkingDirectory (  ) 

Get the current working directory.

The working directory is the root path for subsequent operations involving directories and/or filenames.

Returns:
Server response to the request
See also:
GetDirectoryListing, ChangeDirectory, ParentDirectory
Response sf::Ftp::KeepAlive (  ) 

Send a null command to keep the connection alive.

This command is useful because the server may close the connection automatically if no command is sent.

Returns:
Server response to the request
Response sf::Ftp::Login ( const std::string &  name,
const std::string &  password 
)

Log in using a username and a password.

Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.

Parameters:
name User name
password Password
Returns:
Server response to the request
Response sf::Ftp::Login (  ) 

Log in using an anonymous account.

Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.

Returns:
Server response to the request
Response sf::Ftp::ParentDirectory (  ) 

Go to the parent directory of the current one.

Returns:
Server response to the request
See also:
GetWorkingDirectory, GetDirectoryListing, ChangeDirectory
Response sf::Ftp::RenameFile ( const std::string &  file,
const std::string &  newName 
)

Rename an existing file.

The filenames must be relative to the current working directory.

Parameters:
file File to rename
newName New name of the file
Returns:
Server response to the request
See also:
DeleteFile
Response sf::Ftp::Upload ( const std::string &  localFile,
const std::string &  remotePath,
TransferMode  mode = Binary 
)

Upload a file to the server.

The name of the local file is relative to the current working directory of your application, and the remote path is relative to the current directory of the FTP server.

Parameters:
localFile Path of the local file to upload
remotePath Where to put to file on the server
mode Transfer mode
Returns:
Server response to the request

The documentation for this class was generated from the following file: