📄 classpftpserver.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>PFTPServer class Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.2.18 --><center><a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center><hr><h1>PFTPServer Class Reference</h1><code>#include <<a class="el" href="ftp_8h-source.html">ftp.h</a>></code><p><p>Inheritance diagram for PFTPServer:<p><center><img src="classPFTPServer.png" usemap="#PFTPServer_map" border="0" alt=""></center><map name="PFTPServer_map"><area href="classPFTP.html" alt="PFTP" shape="rect" coords="0,224,109,248"><area href="classPInternetProtocol.html" alt="PInternetProtocol" shape="rect" coords="0,168,109,192"><area href="classPIndirectChannel.html" alt="PIndirectChannel" shape="rect" coords="0,112,109,136"><area href="classPChannel.html" alt="PChannel" shape="rect" coords="0,56,109,80"><area href="classPObject.html" alt="PObject" shape="rect" coords="0,0,109,24"></map><a href="classPFTPServer-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Public Types</h2></td></tr><tr><td nowrap align=right valign=top>enum </td><td valign=bottom>{ <a class="el" href="classPFTPServer.html#s1s0">MaxIllegalPasswords</a> = 3 }</td></tr><tr><td colspan=2><br><h2>Public Methods</h2></td></tr><tr><td nowrap align=right valign=top> </td><td valign=bottom><a class="el" href="classPFTPServer.html#a0">PFTPServer</a> ()</td></tr><tr><td> </td><td><font size=-1><em>declare a server socket</em> <a href="#a0"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top> </td><td valign=bottom><a class="el" href="classPFTPServer.html#a1">PFTPServer</a> (const <a class="el" href="classPString.html">PString</a> &<a class="el" href="classPFTPServer.html#n0">readyString</a>)</td></tr><tr><td nowrap align=right valign=top> </td><td valign=bottom><a class="el" href="classPFTPServer.html#a2">~PFTPServer</a> ()</td></tr><tr><td> </td><td><font size=-1><em>Delete the server, cleaning up passive sockets.</em> <a href="#a2"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>virtual <a class="el" href="classPString.html">PString</a> </td><td valign=bottom><a class="el" href="classPFTPServer.html#a3">GetHelloString</a> (const <a class="el" href="classPString.html">PString</a> &user) const</td></tr><tr><td nowrap align=right valign=top>virtual <a class="el" href="classPString.html">PString</a> </td><td valign=bottom><a class="el" href="classPFTPServer.html#a4">GetGoodbyeString</a> (const <a class="el" href="classPString.html">PString</a> &user) const</td></tr><tr><td> </td><td><font size=-1><em>return the string printed just before exiting</em> <a href="#a4"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>virtual <a class="el" href="classPString.html">PString</a> </td><td valign=bottom><a class="el" href="classPFTPServer.html#a5">GetSystemTypeString</a> () const</td></tr><tr><td> </td><td><font size=-1><em>return the string to be returned by the SYST command</em> <a href="#a5"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a6">GetAllowThirdPartyPort</a> () const</td></tr><tr><td> </td><td><font size=-1><em>return the thirdPartyPort flag, allowing 3 host put and get.</em> <a href="#a6"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="classPFTPServer.html#a7">SetAllowThirdPartyPort</a> (BOOL <a class="el" href="classPFTPServer.html#n2">state</a>)</td></tr><tr><td> </td><td><font size=-1><em>Set the thirdPartyPort flag.</em> <a href="#a7"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a8">ProcessCommand</a> ()</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a9">DispatchCommand</a> (PINDEX code, const <a class="el" href="classPString.html">PString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a10">CheckLoginRequired</a> (PINDEX cmd)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a11">AuthoriseUser</a> (const <a class="el" href="classPString.html">PString</a> &user, const <a class="el" href="classPString.html">PString</a> &password, BOOL &replied)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a12">OnUnknown</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &command)</td></tr><tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classPFTPServer.html#a13">OnError</a> (PINDEX errorCode, PINDEX cmdNum, const char *msg)</td></tr><tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classPFTPServer.html#a14">OnSyntaxError</a> (PINDEX cmdNum)</td></tr><tr><td> </td><td><font size=-1><em>Called for syntax errors in commands.</em> <a href="#a14"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classPFTPServer.html#a15">OnNotImplemented</a> (PINDEX cmdNum)</td></tr><tr><td> </td><td><font size=-1><em>Called for unimplemented commands.</em> <a href="#a15"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="classPFTPServer.html#a16">OnCommandSuccessful</a> (PINDEX cmdNum)</td></tr><tr><td> </td><td><font size=-1><em>Called for successful commands.</em> <a href="#a16"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a17">OnUSER</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a18">OnPASS</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a19">OnQUIT</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a20">OnPORT</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a21">OnSTRU</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a22">OnMODE</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a23">OnTYPE</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a24">OnNOOP</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a25">OnSYST</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a26">OnSTAT</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a27">OnRETR</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a28">OnSTOR</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a29">OnACCT</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a30">OnAPPE</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a31">OnRNFR</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a32">OnRNTO</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a33">OnDELE</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a34">OnCWD</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a35">OnCDUP</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a36">OnRMD</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a37">OnMKD</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a38">OnPWD</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a39">OnLIST</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a40">OnNLST</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a41">OnPASV</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a42">OnHELP</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a43">OnSITE</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a44">OnABOR</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a45">OnSMNT</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a46">OnREIN</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a47">OnSTOU</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a48">OnALLO</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>virtual BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#a49">OnREST</a> (const <a class="el" href="classPCaselessString.html">PCaselessString</a> &args)</td></tr><tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="classPFTPServer.html#a50">SendToClient</a> (const <a class="el" href="classPFilePath.html">PFilePath</a> &filename)</td></tr><tr><td> </td><td><font size=-1><em>Send the specified file to the client.</em> <a href="#a50"></a><em></em></font><br><br></td></tr><tr><td colspan=2><br><h2>Protected Types</h2></td></tr><tr><td nowrap align=right valign=top>enum </td><td valign=bottom>{ <br> <a class="el" href="classPFTPServer.html#t5t0">NotConnected</a>, <a class="el" href="classPFTPServer.html#t5t1">NeedUser</a>, <a class="el" href="classPFTPServer.html#t5t2">NeedPassword</a>, <a class="el" href="classPFTPServer.html#t5t3">Connected</a>, <br> <a class="el" href="classPFTPServer.html#t5t4">ClientConnect</a><br> }</td></tr><tr><td colspan=2><br><h2>Protected Methods</h2></td></tr><tr><td nowrap align=right valign=top>BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#b0">OnOpen</a> ()</td></tr><tr><td> </td><td><font size=-1><em>Call back to verify open succeeded in an <a class="el" href="classPInternetProtocol.html">PInternetProtocol</a> class.</em> <a href="#b0"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="classPFTPServer.html#b1">Construct</a> ()</td></tr><tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr><tr><td nowrap align=right valign=top><a class="el" href="classPString.html">PString</a> </td><td valign=bottom><a class="el" href="classPFTPServer.html#n0">readyString</a></td></tr><tr><td nowrap align=right valign=top>BOOL </td><td valign=bottom><a class="el" href="classPFTPServer.html#n1">thirdPartyPort</a></td></tr><tr><td nowrap align=right valign=top>enum PFTPServer:: { ... } </td><td valign=bottom><a class="el" href="classPFTPServer.html#n2">state</a></td></tr><tr><td nowrap align=right valign=top><a class="el" href="classPIPSocket_1_1Address.html">PIPSocket::Address</a> </td><td valign=bottom><a class="el" href="classPFTPServer.html#n3">remoteHost</a></td></tr><tr><td nowrap align=right valign=top>WORD </td><td valign=bottom><a class="el" href="classPFTPServer.html#n4">remotePort</a></td></tr><tr><td nowrap align=right valign=top><a class="el" href="classPTCPSocket.html">PTCPSocket</a> * </td><td valign=bottom><a class="el" href="classPFTPServer.html#n5">passiveSocket</a></td></tr><tr><td nowrap align=right valign=top>char </td><td valign=bottom><a class="el" href="classPFTPServer.html#n6">type</a></td></tr><tr><td nowrap align=right valign=top>char </td><td valign=bottom><a class="el" href="classPFTPServer.html#n7">structure</a></td></tr><tr><td nowrap align=right valign=top>char </td><td valign=bottom><a class="el" href="classPFTPServer.html#n8">mode</a></td></tr><tr><td nowrap align=right valign=top><a class="el" href="classPString.html">PString</a> </td><td valign=bottom><a class="el" href="classPFTPServer.html#n9">userName</a></td></tr><tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="classPFTPServer.html#n10">illegalPasswordCount</a></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>File Transfer Protocol server channel class. <p><hr><h2>Member Enumeration Documentation</h2><a name="s1" doxytag="PFTPServer::@15"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> anonymous enum </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><dl compact><dt><b>Enumeration values: </b></dt><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em><a name="s1s0" doxytag="MaxIllegalPasswords"></a><em>MaxIllegalPasswords</em></em> </td><td></td></tr></table></dl> </td> </tr></table><a name="t5" doxytag="PFTPServer::@16"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> anonymous enum<code> [protected]</code> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><dl compact><dt><b>Enumeration values: </b></dt><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em><a name="t5t0" doxytag="NotConnected"></a><em>NotConnected</em></em> </td><td></td></tr><tr><td valign=top><em><a name="t5t1" doxytag="NeedUser"></a><em>NeedUser</em></em> </td><td></td></tr><tr><td valign=top><em><a name="t5t2" doxytag="NeedPassword"></a><em>NeedPassword</em></em> </td><td></td></tr><tr><td valign=top><em><a name="t5t3" doxytag="Connected"></a><em>Connected</em></em> </td><td></td></tr><tr><td valign=top><em><a name="t5t4" doxytag="ClientConnect"></a><em>ClientConnect</em></em> </td><td></td></tr></table></dl> </td> </tr></table><hr><h2>Constructor & Destructor Documentation</h2><a name="a0" doxytag="PFTPServer::PFTPServer"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> PFTPServer::PFTPServer </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>declare a server socket<p> </td> </tr></table><a name="a1" doxytag="PFTPServer::PFTPServer"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> PFTPServer::PFTPServer </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const <a class="el" href="classPString.html">PString</a> & </td> <td class="mdname1" valign="top" nowrap> <em>readyString</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><dl compact><dt><b>Parameters: </b></dt><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>readyString</em> </td><td>Sign on string on connection ready. </td></tr></table></dl> </td> </tr></table><a name="a2" doxytag="PFTPServer::~PFTPServer"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> PFTPServer::~PFTPServer </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Delete the server, cleaning up passive sockets.<p> </td> </tr></table><hr><h2>Member Function Documentation</h2><a name="a11" doxytag="PFTPServer::AuthoriseUser"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual BOOL PFTPServer::AuthoriseUser </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const <a class="el" href="classPString.html">PString</a> & </td> <td class="mdname" nowrap> <em>user</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>const <a class="el" href="classPString.html">PString</a> & </td> <td class="mdname" nowrap> <em>password</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>BOOL & </td> <td class="mdname" nowrap> <em>replied</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Validate the user name and password for access. After three invalid attempts, the socket will close and FALSE is returned.<p>Default implementation returns TRUE for all strings.<p><dl compact><dt><b>Returns: </b></dt><dd> TRUE if user can access, otherwise FALSE </dl><dl compact><dt><b>Parameters: </b></dt><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>password</em> </td><td>User name to authorise. </td></tr><tr><td valign=top><em>replied</em> </td><td>Password supplied for the user. Indication that a reply was sent to client. </td></tr></table></dl> </td> </tr></table><a name="a10" doxytag="PFTPServer::CheckLoginRequired"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual BOOL PFTPServer::CheckLoginRequired </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">PINDEX </td> <td class="mdname1" valign="top" nowrap> <em>cmd</em> </td> <td class="md" valign="top">) </td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -