⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftp.h

📁 《CODE READING》配套书源代码 《CODE READING》配套书源代码
💻 H
字号:
// ftp.h // Copyright (C) 1992-1996 Gnanasekaran Swaminathan <gs4t@virginia.edu>//// Permission is granted to use at your own risk and distribute this software// in source and  binary forms provided  the above copyright notice and  this// paragraph are  preserved on all copies.  This software is provided "as is"// with no express or implied warranty.//// Version: 12Jan97 1.11#ifndef FTP_H#define FTP_H#include <protocol.h>#include <sys/param.h>class ftp: public protocol { public:  enum reptype {    rt_ascii_nonprint,    rt_ascii_telnet,    rt_ascii_asa,    rt_ebcdic_nonprint,    rt_ebcdic_telnet,    rt_ebcdic_asa,    rt_image,    rt_local  };  enum filestru {    fs_file,    fs_record,    fs_page  };  enum transmode {    tm_stream,    tm_block,    tm_comp  };  enum replycodea {    rca_posprelim    = '1',    rca_poscomp      = '2',    rca_posinter     = '3',    rca_error        = '4',    rca_negtranscomp = '4',    rca_negpermcomp  = '5'  };  enum replycodeb {    rcb_syntax       = '0',    rcb_info         = '1',    rcb_conn         = '2',    rcb_auth         = '3',    rcb_unspec       = '4',    rcb_filesys      = '5'  };  class ftpbuf: public protocol::protocolbuf {    // the following are used when this is used as a server    char*           usr;    char*           password;    char*           account;    char            cwd [MAXPATHLEN];    char            parentdir [MAXPATHLEN];    ftp::filestru   fs;    ftp::transmode  tm;    sockinetaddr    udata; // user will listen at this addr for data conn.    int             serverportno;    char            replycode [5];    ostream*           o;    ftp::replycodea send_cmd (const char* cmd, const char* arg=0);    ftp::replycodea ftpdata (int portno, istream* i, ostream* out,			     const char* cmd, const char* arg=0);    ftpbuf (ftpbuf&);    ftpbuf& operator = (ftpbuf&);  public:    ftpbuf (ostream* out = 0);    ftp::replycodea get_response ();    const char*     reply_code () const { return replycode; }    ftp::replycodea help () { return send_cmd ("HELP"); }    ftp::replycodea noop () { return send_cmd ("NOOP"); }    ftp::replycodea quit () { return send_cmd ("QUIT"); }    ftp::replycodea abort () { return send_cmd ("ABOR"); }    ftp::replycodea user (const char* name) {return send_cmd ("USER", name);}    ftp::replycodea passwd (const char* pw) {return send_cmd ("PASS", pw); }    ftp::replycodea acct (const char* ac) {return send_cmd ("ACCT", ac);}    ftp::replycodea cd   (const char* dir);    ftp::replycodea useraddr (sockinetaddr sa);    ftp::replycodea useraddr (const char* host, int portno);    ftp::replycodea server_port (int portno);    ftp::replycodea rep_type (ftp::reptype rt);    ftp::replycodea file_stru (ftp::filestru fs);    ftp::replycodea trans_mode  (ftp::transmode tm);    // service commands    ftp::replycodea getfile (const char* rpath, const char* lpath);    ftp::replycodea list (const char* lpath=0, int justnames = 0);    ftp::replycodea putfile (const char* lpath, const char* rpath);    ftp::replycodea putfile (const char* lpath);    ftp::replycodea append  (const char* lpath, const char* rpath);    ftp::replycodea allocate (int numbytes);    ftp::replycodea restart (int marker);    ftp::replycodea rename (const char* rpath, const char* newrpath);    ftp::replycodea rmfile (const char* rpath);    ftp::replycodea rmdir  (const char* rpath);    ftp::replycodea mkdir  (const char* rpath);    ftp::replycodea pwd    () { return send_cmd ("PWD"); }    ftp::replycodea system () { return send_cmd ("SYST"); }    ftp::replycodea status () { return send_cmd ("STAT"); }    virtual void        serve_clients (int portno = -1);    virtual const char* rfc_name () const { return "ftp"; }    virtual const char* rfc_doc  () const { return "rfc959"; }  };protected:  ftp (): ios (0) {}public:  ftp (ostream* out);  ~ftp () { delete ios::rdbuf (); ios::init (0); }  ftpbuf* rdbuf ()       { return (ftpbuf*) protocol::rdbuf (); }  ftpbuf* operator -> () { return rdbuf (); }};    #endif // !FTP_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -