ftp.cxx
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:3k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * ftp.cxx
  3.  *
  4.  * FTP ancestor class.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: ftp.cxx,v $
  30.  * Revision 1.13  1998/11/30 04:50:46  robertj
  31.  * New directory structure
  32.  *
  33.  * Revision 1.12  1998/09/23 06:21:59  robertj
  34.  * Added open source copyright license.
  35.  *
  36.  * Revision 1.11  1998/01/26 05:20:30  robertj
  37.  * GNU Support.
  38.  *
  39.  * Revision 1.10  1997/07/14 11:47:09  robertj
  40.  * Added "const" to numerous variables.
  41.  *
  42.  * Revision 1.9  1996/09/14 13:09:26  robertj
  43.  * Major upgrade:
  44.  *   rearranged sockets to help support IPX.
  45.  *   added indirect channel class and moved all protocols to descend from it,
  46.  *   separating the protocol from the low level byte transport.
  47.  *
  48.  * Revision 1.8  1996/05/30 10:04:46  robertj
  49.  * Fixed bug in breaking accept within FTP constructor returning wrong error code.
  50.  *
  51.  * Revision 1.7  1996/05/26 03:46:36  robertj
  52.  * Compatibility to GNU 2.7.x
  53.  *
  54.  * Revision 1.6  1996/05/23 09:56:27  robertj
  55.  * Changed FTP so can do passive/active mode on all data transfers.
  56.  *
  57.  * Revision 1.5  1996/03/31 09:01:20  robertj
  58.  * More FTP client implementation.
  59.  *
  60.  * Revision 1.4  1996/03/26 00:50:30  robertj
  61.  * FTP Client Implementation.
  62.  *
  63.  * Revision 1.3  1996/03/18 13:33:15  robertj
  64.  * Fixed incompatibilities to GNU compiler where PINDEX != int.
  65.  *
  66.  * Revision 1.2  1996/03/16 04:51:12  robertj
  67.  * Changed lastResponseCode to an integer.
  68.  *
  69.  * Revision 1.1  1996/03/04 12:12:51  robertj
  70.  * Initial revision
  71.  *
  72.  */
  73. #ifdef __GNUC__
  74. #pragma implementation "ftp.h"
  75. #endif
  76. #include <ptlib.h>
  77. #include <ptlib/sockets.h>
  78. #include <ptclib/ftp.h>
  79. /////////////////////////////////////////////////////////
  80. //  File Transfer Protocol
  81. static const char * const FTPCommands[PFTP::NumCommands] = 
  82. {
  83.   "USER", "PASS", "ACCT", "CWD", "CDUP", "SMNT", "QUIT", "REIN", "PORT", "PASV",
  84.   "TYPE", "STRU", "MODE", "RETR", "STOR", "STOU", "APPE", "ALLO", "REST", "RNFR",
  85.   "RNTO", "ABOR", "DELE", "RMD", "MKD", "PWD", "LIST", "NLST", "SITE", "SYST",
  86.   "STAT", "HELP", "NOOP"
  87. };
  88. PFTP::PFTP()
  89.   : PInternetProtocol("ftp 21", NumCommands, FTPCommands)
  90. {
  91. }
  92. BOOL PFTP::SendPORT(const PIPSocket::Address & addr, WORD port)
  93. {
  94.   PString str(PString::Printf,
  95.               "%i,%i,%i,%i,%i,%i",
  96.               addr.Byte1(),
  97.               addr.Byte2(),
  98.               addr.Byte3(),
  99.               addr.Byte4(),
  100.               port/256,
  101.               port%256);
  102.   return ExecuteCommand(PORT, str)/100 == 2;
  103. }
  104. // End of File ///////////////////////////////////////////////////////////////