<head>
<title>SFML - Simple and Fast Multimedia Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<link rel="stylesheet" type="text/css" href="doxygen.css" title="default" media="screen,print" />
</head>
<body>
<div id="banner-container">
<div id="banner">
<span id="sfml">SFML</span>
</div>
</div>
<div id="content">
<!-- Generated by Doxygen 1.8.2 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.htm"><span>Main Page</span></a></li>
<li><a href="modules.htm"><span>Modules</span></a></li>
<li class="current"><a href="annotated.htm"><span>Classes</span></a></li>
<li><a href="files.htm"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.htm"><span>Class List</span></a></li>
<li><a href="classes.htm"><span>Class Index</span></a></li>
<li><a href="hierarchy.htm"><span>Class Hierarchy</span></a></li>
<li><a href="functions.htm"><span>Class Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>sf</b></li><li class="navelem"><a class="el" href="classsf_1_1Ftp.htm">Ftp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> |
<a href="#pub-types">Public Types</a> |
<a href="#pub-methods">Public Member Functions</a> |
<a href="#friends">Friends</a> |
<a href="classsf_1_1Ftp-members.htm">List of all members</a> </div>
<div class="headertitle">
<div class="title">sf::Ftp Class Reference<div class="ingroups"><a class="el" href="group__network.htm">Network module</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>A FTP client.
<a href="classsf_1_1Ftp.htm#details">More...</a></p>
<p><code>#include <<a class="el" href="Ftp_8hpp_source.htm">Ftp.hpp</a>></code></p>
<div class="dynheader">
Inheritance diagram for sf::Ftp:</div>
<div class="dyncontent">
<div class="center">
<img src="classsf_1_1Ftp.png" usemap="#sf::Ftp_map" alt=""/>
<map id="sf::Ftp_map" name="sf::Ftp_map">
<area href="classsf_1_1NonCopyable.htm" title="Utility class that makes any derived class non-copyable." alt="sf::NonCopyable" shape="rect" coords="0,0,105,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">DirectoryResponse</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialization of FTP response returning a directory. <a href="classsf_1_1Ftp_1_1DirectoryResponse.htm#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">ListingResponse</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialization of FTP response returning a filename lisiting. <a href="classsf_1_1Ftp_1_1ListingResponse.htm#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Define a FTP response. <a href="classsf_1_1Ftp_1_1Response.htm#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a1cd6b89ad23253f6d97e6d4ca4d558cb"><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> { <br/>
<a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cba6f253b362639fb5e059dc292762a21ee">Binary</a>,
<br/>
<a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cbac9e544a22dce8ef3177449cb235d15c2">Ascii</a>,
<br/>
<a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cbabb1e34435231e73c96534c71090be7f4">Ebcdic</a>
<br/>
}</td></tr>
<tr class="memdesc:a1cd6b89ad23253f6d97e6d4ca4d558cb"><td class="mdescLeft"> </td><td class="mdescRight">Enumeration of transfer modes. <a href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cb">More...</a><br/></td></tr>
<tr class="separator:a1cd6b89ad23253f6d97e6d4ca4d558cb"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a2edfa8e9009caf27bce74459ae76dc52"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a2edfa8e9009caf27bce74459ae76dc52">~Ftp</a> ()</td></tr>
<tr class="memdesc:a2edfa8e9009caf27bce74459ae76dc52"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#a2edfa8e9009caf27bce74459ae76dc52"></a><br/></td></tr>
<tr class="separator:a2edfa8e9009caf27bce74459ae76dc52"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af02fb3de3f450a50a27981961c69c860"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#af02fb3de3f450a50a27981961c69c860">connect</a> (const <a class="el" href="classsf_1_1IpAddress.htm">IpAddress</a> &server, unsigned short port=21, <a class="el" href="classsf_1_1Time.htm">Time</a> timeout=<a class="el" href="classsf_1_1Time.htm#a8db127b632fa8da21550e7282af11fa0">Time::Zero</a>)</td></tr>
<tr class="memdesc:af02fb3de3f450a50a27981961c69c860"><td class="mdescLeft"> </td><td class="mdescRight">Connect to the specified FTP server. <a href="#af02fb3de3f450a50a27981961c69c860"></a><br/></td></tr>
<tr class="separator:af02fb3de3f450a50a27981961c69c860"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:acf7459926f3391cd06bf84337ed6a0f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#acf7459926f3391cd06bf84337ed6a0f4">disconnect</a> ()</td></tr>
<tr class="memdesc:acf7459926f3391cd06bf84337ed6a0f4"><td class="mdescLeft"> </td><td class="mdescRight">Close the connection with the server. <a href="#acf7459926f3391cd06bf84337ed6a0f4"></a><br/></td></tr>
<tr class="separator:acf7459926f3391cd06bf84337ed6a0f4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a686262bc377584cd50e52e1576aa3a9b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a686262bc377584cd50e52e1576aa3a9b">login</a> ()</td></tr>
<tr class="memdesc:a686262bc377584cd50e52e1576aa3a9b"><td class="mdescLeft"> </td><td class="mdescRight">Log in using an anonymous account. <a href="#a686262bc377584cd50e52e1576aa3a9b"></a><br/></td></tr>
<tr class="separator:a686262bc377584cd50e52e1576aa3a9b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a99d8114793c1659e9d51d45cecdcd965"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a99d8114793c1659e9d51d45cecdcd965">login</a> (const std::string &name, const std::string &password)</td></tr>
<tr class="memdesc:a99d8114793c1659e9d51d45cecdcd965"><td class="mdescLeft"> </td><td class="mdescRight">Log in using a username and a password. <a href="#a99d8114793c1659e9d51d45cecdcd965"></a><br/></td></tr>
<tr class="separator:a99d8114793c1659e9d51d45cecdcd965"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa1127d442b4acb2105aa8060a39d04fc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#aa1127d442b4acb2105aa8060a39d04fc">keepAlive</a> ()</td></tr>
<tr class="memdesc:aa1127d442b4acb2105aa8060a39d04fc"><td class="mdescLeft"> </td><td class="mdescRight">Send a null command to keep the connection alive. <a href="#aa1127d442b4acb2105aa8060a39d04fc"></a><br/></td></tr>
<tr class="separator:aa1127d442b4acb2105aa8060a39d04fc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a79c654fcdd0c81e68c4fa29af3b45e0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">DirectoryResponse</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a79c654fcdd0c81e68c4fa29af3b45e0c">getWorkingDirectory</a> ()</td></tr>
<tr class="memdesc:a79c654fcdd0c81e68c4fa29af3b45e0c"><td class="mdescLeft"> </td><td class="mdescRight">Get the current working directory. <a href="#a79c654fcdd0c81e68c4fa29af3b45e0c"></a><br/></td></tr>
<tr class="separator:a79c654fcdd0c81e68c4fa29af3b45e0c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8f37258e461fcb9e2a0655e9df0be4a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">ListingResponse</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a8f37258e461fcb9e2a0655e9df0be4a0">getDirectoryListing</a> (const std::string &directory="")</td></tr>
<tr class="memdesc:a8f37258e461fcb9e2a0655e9df0be4a0"><td class="mdescLeft"> </td><td class="mdescRight">Get the contents of the given directory. <a href="#a8f37258e461fcb9e2a0655e9df0be4a0"></a><br/></td></tr>
<tr class="separator:a8f37258e461fcb9e2a0655e9df0be4a0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a7e93488ea6330dd4dd76e428da9bb6d3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a7e93488ea6330dd4dd76e428da9bb6d3">changeDirectory</a> (const std::string &directory)</td></tr>
<tr class="memdesc:a7e93488ea6330dd4dd76e428da9bb6d3"><td class="mdescLeft"> </td><td class="mdescRight">Change the current working directory. <a href="#a7e93488ea6330dd4dd76e428da9bb6d3"></a><br/></td></tr>
<tr class="separator:a7e93488ea6330dd4dd76e428da9bb6d3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad295cf77f30f9ad07b5c401fd9849189"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#ad295cf77f30f9ad07b5c401fd9849189">parentDirectory</a> ()</td></tr>
<tr class="memdesc:ad295cf77f30f9ad07b5c401fd9849189"><td class="mdescLeft"> </td><td class="mdescRight">Go to the parent directory of the current one. <a href="#ad295cf77f30f9ad07b5c401fd9849189"></a><br/></td></tr>
<tr class="separator:ad295cf77f30f9ad07b5c401fd9849189"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a247b84c4b25da37804218c2b748c4787"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a247b84c4b25da37804218c2b748c4787">createDirectory</a> (const std::string &name)</td></tr>
<tr class="memdesc:a247b84c4b25da37804218c2b748c4787"><td class="mdescLeft"> </td><td class="mdescRight">Create a new directory. <a href="#a247b84c4b25da37804218c2b748c4787"></a><br/></td></tr>
<tr class="separator:a247b84c4b25da37804218c2b748c4787"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a2a8a7ef9144204b5b319c9a4be8806c2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a2a8a7ef9144204b5b319c9a4be8806c2">deleteDirectory</a> (const std::string &name)</td></tr>
<tr class="memdesc:a2a8a7ef9144204b5b319c9a4be8806c2"><td class="mdescLeft"> </td><td class="mdescRight">Remove an existing directory. <a href="#a2a8a7ef9144204b5b319c9a4be8806c2"></a><br/></td></tr>
<tr class="separator:a2a8a7ef9144204b5b319c9a4be8806c2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8f99251d7153e1dc26723e4006deb764"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a8f99251d7153e1dc26723e4006deb764">renameFile</a> (const std::string &file, const std::string &newName)</td></tr>
<tr class="memdesc:a8f99251d7153e1dc26723e4006deb764"><td class="mdescLeft"> </td><td class="mdescRight">Rename an existing file. <a href="#a8f99251d7153e1dc26723e4006deb764"></a><br/></td></tr>
<tr class="separator:a8f99251d7153e1dc26723e4006deb764"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8aa272b0eb7769a850006e70fcad370f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a8aa272b0eb7769a850006e70fcad370f">deleteFile</a> (const std::string &name)</td></tr>
<tr class="memdesc:a8aa272b0eb7769a850006e70fcad370f"><td class="mdescLeft"> </td><td class="mdescRight">Remove an existing file. <a href="#a8aa272b0eb7769a850006e70fcad370f"></a><br/></td></tr>
<tr class="separator:a8aa272b0eb7769a850006e70fcad370f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a20c1600ec5fd6f5a2ad1429ab8aa5df4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a20c1600ec5fd6f5a2ad1429ab8aa5df4">download</a> (const std::string &remoteFile, const std::string &localPath, <a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> mode=<a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cba6f253b362639fb5e059dc292762a21ee">Binary</a>)</td></tr>
<tr class="memdesc:a20c1600ec5fd6f5a2ad1429ab8aa5df4"><td class="mdescLeft"> </td><td class="mdescRight">Download a file from the server. <a href="#a20c1600ec5fd6f5a2ad1429ab8aa5df4"></a><br/></td></tr>
<tr class="separator:a20c1600ec5fd6f5a2ad1429ab8aa5df4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a46d6e15cddd719288b5a08b685e11765"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1Ftp.htm#a46d6e15cddd719288b5a08b685e11765">upload</a> (const std::string &localFile, const std::string &remotePath, <a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> mode=<a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cba6f253b362639fb5e059dc292762a21ee">Binary</a>)</td></tr>
<tr class="memdesc:a46d6e15cddd719288b5a08b685e11765"><td class="mdescLeft"> </td><td class="mdescRight">Upload a file to the server. <a href="#a46d6e15cddd719288b5a08b685e11765"></a><br/></td></tr>
<tr class="separator:a46d6e15cddd719288b5a08b685e11765"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a8dee57337b6a7e183bfe21d178757b0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8dee57337b6a7e183bfe21d178757b0c"></a>
class </td><td class="memItemRight" valign="bottom"><b>DataChannel</b></td></tr>
<tr class="separator:a8dee57337b6a7e183bfe21d178757b0c"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A FTP client. </p>
<p><a class="el" href="classsf_1_1Ftp.htm" title="A FTP client.">sf::Ftp</a> is a very simple FTP client that allows you to communicate with a FTP server.</p>
<p>The FTP protocol allows you to manipulate a remote file system (list files, upload, download, create, remove, ...).</p>
<p>Using the FTP client consists of 4 parts: </p>
<ul>
<li>Connecting to the FTP server </li>
<li>Logging in (either as a registered user or anonymously) </li>
<li>Sending commands to the server </li>
<li>Disconnecting (this part can be done implicitely by the destructor)</li>
</ul>
<p>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 <a class="el" href="classsf_1_1Ftp_1_1Response.htm" title="Define a FTP response.">sf::Ftp::Response</a> to provide this data.</p>
<p>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.</p>
<p>Usage example: </p>
<div class="fragment"><div class="line"><span class="comment">// Create a new FTP client</span></div>
<div class="line"><a class="code" href="classsf_1_1Ftp.htm" title="A FTP client.">sf::Ftp</a> ftp;</div>
<div class="line"></div>
<div class="line"><span class="comment">// Connect to the server</span></div>
<div class="line"><a class="code" href="classsf_1_1Ftp_1_1Response.htm" title="Define a FTP response.">sf::Ftp::Response</a> response = ftp.<a class="code" href="classsf_1_1Ftp.htm#af02fb3de3f450a50a27981961c69c860" title="Connect to the specified FTP server.">connect</a>(<span class="stringliteral">"ftp://ftp.myserver.com"</span>);</div>
<div class="line"><span class="keywordflow">if</span> (response.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a4dadbe0fe0a3ef2d571a017e1645e675" title="Check if the status code means a success.">isOk</a>())</div>
<div class="line"> std::cout << <span class="stringliteral">"Connected"</span> << std::endl;</div>
<div class="line"></div>
<div class="line"><span class="comment">// Log in</span></div>
<div class="line">response = ftp.<a class="code" href="classsf_1_1Ftp.htm#a686262bc377584cd50e52e1576aa3a9b" title="Log in using an anonymous account.">login</a>(<span class="stringliteral">"laurent"</span>, <span class="stringliteral">"dF6Zm89D"</span>);</div>
<div class="line"><span class="keywordflow">if</span> (response.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a4dadbe0fe0a3ef2d571a017e1645e675" title="Check if the status code means a success.">isOk</a>())</div>
<div class="line"> std::cout << <span class="stringliteral">"Logged in"</span> << std::endl;</div>
<div class="line"></div>
<div class="line"><span class="comment">// Print the working directory</span></div>
<div class="line"><a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm" title="Specialization of FTP response returning a directory.">sf::Ftp::DirectoryResponse</a> directory = ftp.<a class="code" href="classsf_1_1Ftp.htm#a79c654fcdd0c81e68c4fa29af3b45e0c" title="Get the current working directory.">getWorkingDirectory</a>();</div>
<div class="line"><span class="keywordflow">if</span> (directory.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a4dadbe0fe0a3ef2d571a017e1645e675" title="Check if the status code means a success.">isOk</a>())</div>
<div class="line"> std::cout << <span class="stringliteral">"Working directory: "</span> << directory.<a class="code" href="classsf_1_1Ftp_1_1DirectoryResponse.htm#a500793778ad0ed223aa86ed8fbee28a3" title="Get the directory returned in the response.">getDirectory</a>() << std::endl;</div>
<div class="line"></div>
<div class="line"><span class="comment">// Create a new directory</span></div>
<div class="line">response = ftp.<a class="code" href="classsf_1_1Ftp.htm#a247b84c4b25da37804218c2b748c4787" title="Create a new directory.">createDirectory</a>(<span class="stringliteral">"files"</span>);</div>
<div class="line"><span class="keywordflow">if</span> (response.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a4dadbe0fe0a3ef2d571a017e1645e675" title="Check if the status code means a success.">isOk</a>())</div>
<div class="line"> std::cout << <span class="stringliteral">"Created new directory"</span> << std::endl;</div>
<div class="line"></div>
<div class="line"><span class="comment">// Upload a file to this new directory</span></div>
<div class="line">response = ftp.<a class="code" href="classsf_1_1Ftp.htm#a46d6e15cddd719288b5a08b685e11765" title="Upload a file to the server.">upload</a>(<span class="stringliteral">"local-path/file.txt"</span>, <span class="stringliteral">"files"</span>, <a class="code" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cbac9e544a22dce8ef3177449cb235d15c2" title="Text mode using ASCII encoding.">sf::Ftp::Ascii</a>);</div>
<div class="line"><span class="keywordflow">if</span> (response.<a class="code" href="classsf_1_1Ftp_1_1Response.htm#a4dadbe0fe0a3ef2d571a017e1645e675" title="Check if the status code means a success.">isOk</a>())</div>
<div class="line"> std::cout << <span class="stringliteral">"File uploaded"</span> << std::endl;</div>
<div class="line"></div>
<div class="line"><span class="comment">// Disconnect from the server (optional)</span></div>
<div class="line">ftp.<a class="code" href="classsf_1_1Ftp.htm#acf7459926f3391cd06bf84337ed6a0f4" title="Close the connection with the server.">disconnect</a>();</div>
</div><!-- fragment -->
<p>Definition at line <a class="el" href="Ftp_8hpp_source.htm#l00047">47</a> of file <a class="el" href="Ftp_8hpp_source.htm">Ftp.hpp</a>.</p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="a1cd6b89ad23253f6d97e6d4ca4d558cb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cb">sf::Ftp::TransferMode</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Enumeration of transfer modes. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a1cd6b89ad23253f6d97e6d4ca4d558cba6f253b362639fb5e059dc292762a21ee"></a>Binary</em> </td><td>
<p>Binary mode (file is transfered as a sequence of bytes) </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a1cd6b89ad23253f6d97e6d4ca4d558cbac9e544a22dce8ef3177449cb235d15c2"></a>Ascii</em> </td><td>
<p><a class="el" href="classsf_1_1Text.htm" title="Graphical text that can be drawn to a render target.">Text</a> mode using ASCII encoding. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a1cd6b89ad23253f6d97e6d4ca4d558cbabb1e34435231e73c96534c71090be7f4"></a>Ebcdic</em> </td><td>
<p><a class="el" href="classsf_1_1Text.htm" title="Graphical text that can be drawn to a render target.">Text</a> mode using EBCDIC encoding. </p>
</td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="Ftp_8hpp_source.htm#l00055">55</a> of file <a class="el" href="Ftp_8hpp_source.htm">Ftp.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor & Destructor Documentation</h2>
<a class="anchor" id="a2edfa8e9009caf27bce74459ae76dc52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">sf::Ftp::~Ftp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Destructor. </p>
<p>Automatically closes the connection with the server if it is still opened. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a7e93488ea6330dd4dd76e428da9bb6d3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::changeDirectory </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>directory</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Change the current working directory. </p>
<p>The new directory must be relative to the current one.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">directory</td><td>New working directory</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a79c654fcdd0c81e68c4fa29af3b45e0c" title="Get the current working directory.">getWorkingDirectory</a>, <a class="el" href="classsf_1_1Ftp.htm#a8f37258e461fcb9e2a0655e9df0be4a0" title="Get the contents of the given directory.">getDirectoryListing</a>, <a class="el" href="classsf_1_1Ftp.htm#ad295cf77f30f9ad07b5c401fd9849189" title="Go to the parent directory of the current one.">parentDirectory</a> </dd></dl>
</div>
</div>
<a class="anchor" id="af02fb3de3f450a50a27981961c69c860"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::connect </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsf_1_1IpAddress.htm">IpAddress</a> & </td>
<td class="paramname"><em>server</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned short </td>
<td class="paramname"><em>port</em> = <code>21</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classsf_1_1Time.htm">Time</a> </td>
<td class="paramname"><em>timeout</em> = <code><a class="el" href="classsf_1_1Time.htm#a8db127b632fa8da21550e7282af11fa0">Time::Zero</a></code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Connect to the specified FTP server. </p>
<p>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, <a class="el" href="classsf_1_1Time.htm#a8db127b632fa8da21550e7282af11fa0" title="Predefined "zero" time value.">Time::Zero</a>, means that the system timeout will be used (which is usually pretty long).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">server</td><td>Name or address of the FTP server to connect to </td></tr>
<tr><td class="paramname">port</td><td>Port used for the connection </td></tr>
<tr><td class="paramname">timeout</td><td>Maximum time to wait</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#acf7459926f3391cd06bf84337ed6a0f4" title="Close the connection with the server.">disconnect</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a247b84c4b25da37804218c2b748c4787"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::createDirectory </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new directory. </p>
<p>The new directory is created as a child of the current working directory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the directory to create</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a2a8a7ef9144204b5b319c9a4be8806c2" title="Remove an existing directory.">deleteDirectory</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a2a8a7ef9144204b5b319c9a4be8806c2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::deleteDirectory </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove an existing directory. </p>
<p>The directory to remove must be relative to the current working directory. Use this function with caution, the directory will be removed permanently!</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the directory to remove</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a247b84c4b25da37804218c2b748c4787" title="Create a new directory.">createDirectory</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a8aa272b0eb7769a850006e70fcad370f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::deleteFile </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove an existing file. </p>
<p>The file name must be relative to the current working directory. Use this function with caution, the file will be removed permanently!</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>File to remove</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a8f99251d7153e1dc26723e4006deb764" title="Rename an existing file.">renameFile</a> </dd></dl>
</div>
</div>
<a class="anchor" id="acf7459926f3391cd06bf84337ed6a0f4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::disconnect </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Close the connection with the server. </p>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#af02fb3de3f450a50a27981961c69c860" title="Connect to the specified FTP server.">connect</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a20c1600ec5fd6f5a2ad1429ab8aa5df4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::download </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>remoteFile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>localPath</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> </td>
<td class="paramname"><em>mode</em> = <code><a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cba6f253b362639fb5e059dc292762a21ee">Binary</a></code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Download a file from the server. </p>
<p>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.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">remoteFile</td><td>Filename of the distant file to download </td></tr>
<tr><td class="paramname">localPath</td><td>Where to put to file on the local computer </td></tr>
<tr><td class="paramname">mode</td><td>Transfer mode</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a46d6e15cddd719288b5a08b685e11765" title="Upload a file to the server.">upload</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a8f37258e461fcb9e2a0655e9df0be4a0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1ListingResponse.htm">ListingResponse</a> sf::Ftp::getDirectoryListing </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>directory</em> = <code>""</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the contents of the given directory. </p>
<p>This function retrieves the sub-directories and files contained in the given directory. It is not recursive. The <em>directory</em> parameter is relative to the current working directory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">directory</td><td>Directory to list</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a79c654fcdd0c81e68c4fa29af3b45e0c" title="Get the current working directory.">getWorkingDirectory</a>, <a class="el" href="classsf_1_1Ftp.htm#a7e93488ea6330dd4dd76e428da9bb6d3" title="Change the current working directory.">changeDirectory</a>, <a class="el" href="classsf_1_1Ftp.htm#ad295cf77f30f9ad07b5c401fd9849189" title="Go to the parent directory of the current one.">parentDirectory</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a79c654fcdd0c81e68c4fa29af3b45e0c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1DirectoryResponse.htm">DirectoryResponse</a> sf::Ftp::getWorkingDirectory </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the current working directory. </p>
<p>The working directory is the root path for subsequent operations involving directories and/or filenames.</p>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a8f37258e461fcb9e2a0655e9df0be4a0" title="Get the contents of the given directory.">getDirectoryListing</a>, <a class="el" href="classsf_1_1Ftp.htm#a7e93488ea6330dd4dd76e428da9bb6d3" title="Change the current working directory.">changeDirectory</a>, <a class="el" href="classsf_1_1Ftp.htm#ad295cf77f30f9ad07b5c401fd9849189" title="Go to the parent directory of the current one.">parentDirectory</a> </dd></dl>
</div>
</div>
<a class="anchor" id="aa1127d442b4acb2105aa8060a39d04fc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::keepAlive </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a null command to keep the connection alive. </p>
<p>This command is useful because the server may close the connection automatically if no command is sent.</p>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request </dd></dl>
</div>
</div>
<a class="anchor" id="a686262bc377584cd50e52e1576aa3a9b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::login </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Log in using an anonymous account. </p>
<p>Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.</p>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request </dd></dl>
</div>
</div>
<a class="anchor" id="a99d8114793c1659e9d51d45cecdcd965"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::login </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>password</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Log in using a username and a password. </p>
<p>Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>User name </td></tr>
<tr><td class="paramname">password</td><td>Password</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request </dd></dl>
</div>
</div>
<a class="anchor" id="ad295cf77f30f9ad07b5c401fd9849189"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::parentDirectory </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Go to the parent directory of the current one. </p>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a79c654fcdd0c81e68c4fa29af3b45e0c" title="Get the current working directory.">getWorkingDirectory</a>, <a class="el" href="classsf_1_1Ftp.htm#a8f37258e461fcb9e2a0655e9df0be4a0" title="Get the contents of the given directory.">getDirectoryListing</a>, <a class="el" href="classsf_1_1Ftp.htm#a7e93488ea6330dd4dd76e428da9bb6d3" title="Change the current working directory.">changeDirectory</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a8f99251d7153e1dc26723e4006deb764"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::renameFile </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>newName</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Rename an existing file. </p>
<p>The filenames must be relative to the current working directory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">file</td><td>File to rename </td></tr>
<tr><td class="paramname">newName</td><td>New name of the file</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a8aa272b0eb7769a850006e70fcad370f" title="Remove an existing file.">deleteFile</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a46d6e15cddd719288b5a08b685e11765"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classsf_1_1Ftp_1_1Response.htm">Response</a> sf::Ftp::upload </td>
<td>(</td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>localFile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string & </td>
<td class="paramname"><em>remotePath</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cb">TransferMode</a> </td>
<td class="paramname"><em>mode</em> = <code><a class="el" href="classsf_1_1Ftp.htm#a1cd6b89ad23253f6d97e6d4ca4d558cba6f253b362639fb5e059dc292762a21ee">Binary</a></code> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Upload a file to the server. </p>
<p>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.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">localFile</td><td>Path of the local file to upload </td></tr>
<tr><td class="paramname">remotePath</td><td>Where to put to file on the server </td></tr>
<tr><td class="paramname">mode</td><td>Transfer mode</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Server response to the request</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classsf_1_1Ftp.htm#a20c1600ec5fd6f5a2ad1429ab8aa5df4" title="Download a file from the server.">download</a> </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="Ftp_8hpp_source.htm">Ftp.hpp</a></li>
</ul>
</div><!-- contents -->
</div>
<div id="footer-container">
<div id="footer">
Copyright � Laurent Gomila ::
</div>
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41898676-1', 'srchub.org');
ga('send', 'pageview');