X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/605d715ddd84ddc3e78423e3f3ae5c27c8ff4d43..298fe32f7a9a1257e4cdc0c07c8698984eb5f4fe:/docs/latex/wx/ftp.tex diff --git a/docs/latex/wx/ftp.tex b/docs/latex/wx/ftp.tex index b8c25d08b9..eb0bf3fe87 100644 --- a/docs/latex/wx/ftp.tex +++ b/docs/latex/wx/ftp.tex @@ -1,5 +1,90 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Name: ftp.tex +%% Purpose: wxFTP documentation +%% Author: Guilhem Lavaux, Vadim Zeitlin +%% Modified by: +%% Created: ~1997 +%% RCS-ID: $Id$ +%% Copyright: (c) wxWindows team +%% License: wxWindows license +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \section{\class{wxFTP}}\label{wxftp} +wxFTP can be used to establish a connection to an FTP server and perform all the +usual operations. Please consult the RFC 959 for more details about the FTP +protocol. + +To use a commands which doesn't involve file transfer (i.e. directory oriented +commands) you just need to call a corresponding member function or use the +generic \helpref{SendCommand}{wxftpsendcommand} method. However to actually +transfer files you just get or give a stream to or from this class and the +actual data are read or written using the usual stream methods. + +Example of using wxFTP for file downloading: + +\begin{verbatim} + wxFTP ftp; + + // if you don't use these lines anonymous login will be used + ftp.SetUser("user"); + ftp.SetPassword("password"); + + if ( !ftp.Connect("ftp.wxwindows.org") ) + { + wxLogError("Couldn't connect"); + return; + } + + ftp.ChDir("/pub"); + wxInputStream *in = ftp.GetInputStream("wxWindows-4.2.0.tar.gz"); + if ( !in ) + { + wxLogError("Coudln't get file"); + } + else + { + size_t size = in->StreamSize(); + char *data = new char[size]; + if ( !in->Read(data, size) ) + { + wxLogError("Read error"); + } + else + { + // file data is in the buffer + ... + } + + delete [] data; + delete in; + } +\end{verbatim} + +To upload a file you would do (assuming the connection to the server was opened +successfully): + +\begin{verbatim} + wxOutputStream *out = ftp.GetOutputStream("filename"); + if ( out ) + { + out->Write(...); // your data + delete out; + } +\end{verbatim} + +\wxheading{Constants} + +wxFTP defines constants corresponding to the two supported transfer modes: + +\begin{verbatim} +enum TransferMode +{ + ASCII, + BINARY +}; +\end{verbatim} + \wxheading{Derived from} \helpref{wxProtocol}{wxprotocol} @@ -18,24 +103,42 @@ \latexignore{\rtfignore{\wxheading{Members}}} -\membersection{wxFTP::SendCommand} +\membersection{wxFTP::wxFTP} + +\func{}{wxFTP}{\void} + +Default constructor. -\func{bool}{SendCommand}{\param{const wxString\&}{ command}, \param{char }{ret}} +\membersection{wxFTP::\destruct{wxFTP}} + +\func{}{\destruct{wxFTP}}{\void} + +Destructor will close the connection if connected. + +\membersection{wxFTP::CheckCommand} + +\func{bool}{CheckCommand}{\param{const wxString\&}{ command}, \param{char }{ret}} Send the specified {\it command} to the FTP server. {\it ret} specifies the expected result. \wxheading{Return value} -TRUE, if the command has been sent successfully, else FALSE. +TRUE if the command has been sent successfully, else FALSE. -% ---------------------------------------------------------------------------- +\membersection{wxFTP::SendCommand}\label{wxftpsendcommand} + +\func{char}{SendCommand}{\param{const wxString\&}{ command}} + +Send the specified {\it command} to the FTP server and return the first +character of the return code. \membersection{wxFTP::GetLastResult} \func{const wxString\&}{GetLastResult}{\void} -Returns the last command result. +Returns the last command result, i.e. the full server reply for the last +command. % ---------------------------------------------------------------------------- @@ -84,6 +187,29 @@ Delete the file specified by {\it path}. Returns TRUE if successful. % ---------------------------------------------------------------------------- +\membersection{wxFTP::SetAscii} + +\func{bool}{SetAscii}{\void} + +Sets the transfer mode to ASCII. It will be used for the next transfer. + +\membersection{wxFTP::SetBinary} + +\func{bool}{SetBinary}{\void} + +Sets the transfer mode to binary (IMAGE). It will be used for the next transfer. + +\membersection{wxFTP::SetTransferMode} + +\func{bool}{SetTransferMode}{\param{TransferMode }{mode}} + +Sets the transfer mode to the specified one. It will be used for the next +transfer. + +If this function is never called, binary transfer mode is used by default. + +% ---------------------------------------------------------------------------- + \membersection{wxFTP::SetUser} \func{void}{SetUser}{\param{const wxString\&}{ user}} @@ -119,13 +245,14 @@ For example, you can use: "ftp://a\_user:a\_password@a.host:service/a\_directory to specify a user and a password. % ---------------------------------------------------------------------------- -\membersection{wxFTP::GetList} -\func{wxList *}{GetList}{\param{const wxString\&}{ wildcard}} +\membersection{wxFTP::GetDirList}\label{wxftpgetdirlist} + +\func{bool}{GetDirList}{\param{wxArrayString\& }{files}, \param{const wxString\&}{ wildcard = ""}} The GetList function is quite low-level. It returns the list of the files in the current directory. The list can be filtered using the {\it wildcard} string. -If {\it wildcard} is a NULL string, it will return all files in directory. +If {\it wildcard} is empty (default), it will return all files in directory. The form of the list can change from one peer system to another. For example, for a UNIX peer system, it will look like this: @@ -146,7 +273,24 @@ winamp~1 exe 520196 02-25-1999 19:28 winamp204.exe 1 file(s) 520 196 bytes \end{verbatim} -The list is a string list and one node corresponds to a line sent by the peer. +Return value: TRUE if the file list was successfully retrieved, FALSE +otherwise. + +\wxheading{See also} + +\helpref{GetFilesList}{wxftpgetfileslist} + +\membersection{wxFTP::GetFilesList}\label{wxftpgetfileslist} + +\func{bool}{GetFilesList}{\param{wxArrayString\& }{files}, \param{const wxString\&}{ wildcard = ""}} + +This function returns the computer-parsable list of the files in the current +directory (optionally only of the files matching the {\it wildcard}, all files +by default). This list always has the same format and contains one full +(including the directory path) file name per line. + +Return value: TRUE if the file list was successfully retrieved, FALSE +otherwise. % ---------------------------------------------------------------------------- @@ -172,41 +316,41 @@ An initialized write-only stream. \func{wxInputStream *}{GetInputStream}{\param{const wxString\&}{ path}} -Creates a new input stream on the the specified path. You can use all but seek -functionnality of wxStream. Seek isn't available on all stream. For example, -http or ftp streams doesn't deal with it. Other functions like Tell -aren't available for the moment for this sort of stream. +Creates a new input stream on the the specified path. You can use all but the seek +functionality of wxStream. Seek isn't available on all streams. For example, +http or ftp streams do not deal with it. Other functions like Tell +are not available for this sort of stream, at present. You will be notified when the EOF is reached by an error. \wxheading{Return value} -Returns NULL if an error occured (it could be a network failure or the fact +Returns NULL if an error occurred (it could be a network failure or the fact that the file doesn't exist). -Returns the initialized stream. You will have to delete it yourself once you -don't use it anymore. The destructor close the DATA stream connection but -will leave the COMMAND stream connection opened. It means that you still -can send new commands without reconnecting. +Returns the initialized stream. You will have to delete it yourself when you +don't need it anymore. The destructor closes the DATA stream connection but +will leave the COMMAND stream connection opened. It means that you can still +send new commands without reconnecting. \wxheading{Example of a standalone connection (without wxURL)} \begin{verbatim} wxFTP ftp; - wxInputStream *in\_stream; + wxInputStream *in_stream; char *data; ftp.Connect("a.host.domain"); - ftp.ChDir("a\_directory"); - in\_stream = ftp.GetInputStream("a\_file\_to\_get"); + ftp.ChDir("a_directory"); + in_stream = ftp.GetInputStream("a_file_to_get"); - data = new char[in\_stream->StreamSize()]; + data = new char[in_stream->StreamSize()]; - in\_stream->Read(data, in\_stream->StreamSize()); - if (in\_stream->LastError() != wxStream\_NOERROR) { + in_stream->Read(data, in_stream->StreamSize()); + if (in_stream->LastError() != wxStream_NOERROR) { // Do something. } - delete in\_stream; /* Close the DATA connection */ + delete in_stream; /* Close the DATA connection */ ftp.Close(); /* Close the COMMAND connection */ \end{verbatim}