AC_FTP.H
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:5k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. /*---------------------------------------------------------------------
  2.  *
  3.  * Program: AC_FTP.EXE Asynch Ftp Client (TCP)
  4.  *
  5.  * filename: ac_ftp.h
  6.  *
  7.  * copyright by Bob Quinn, 1995
  8.  *   
  9.  *  Description:
  10.  *    Common declarations.
  11.  *  This software is not subject to any  export  provision  of
  12.  *  the  United  States  Department  of  Commerce,  and may be
  13.  *  exported to any country or planet.
  14.  *
  15.  *  Permission is granted to anyone to use this  software  for any  
  16.  *  purpose  on  any computer system, and to alter it and redistribute 
  17.  *  it freely, subject to the following  restrictions:
  18.  *
  19.  *  1. The author is not responsible for the consequences of
  20.  *     use of this software, no matter how awful, even if they
  21.  *     arise from flaws in it.
  22.  *
  23.  *  2. The origin of this software must not be misrepresented,
  24.  *     either by explicit claim or by omission.  Since few users
  25.  *     ever read sources, credits must appear in the documentation.
  26.  *
  27.  *  3. Altered versions must be plainly marked as such, and
  28.  *     must not be misrepresented as being the original software.
  29.  *     Since few users ever read sources, credits must appear in
  30.  *     the documentation.
  31.  *
  32.  *  4. This notice may not be removed or altered.
  33.  *  
  34.  ---------------------------------------------------------------------*/
  35. #include <winsock.h>
  36. #include "..winsockx.h"
  37. #ifndef IDC_STATIC
  38. #define IDC_STATIC -1
  39. #endif
  40. #define CMD_SIZE    128
  41. #define RPLY_SIZE   MTU_SIZE
  42. #define MAXNULPUT   1048576
  43. /* Ftp Commands that take arguments (subset) */
  44. #define CWD  1
  45. #define DELE 2
  46. #define PASS 3
  47. #define PORT 4
  48. #define RETR 5
  49. #define STOR 6
  50. #define TYPE 7 
  51. #define USER 8 
  52. /* Ftp commands without arguments (subset) */
  53. #define ABOR 9
  54. #define LIST 10     
  55. #define PWD  11
  56. #define QUIT 12
  57. /* Ftp commmand strings */
  58. extern LPSTR aszFtpCmd[13];
  59. /*----------- Application states -----------*/
  60. #define NOT_CONNECTED    0
  61. #define CTRLCONNECTED    2
  62. #define DATACONNECTED    4
  63. /*------------ Global variables ------------*/
  64. extern char szAppName[];
  65. extern BOOL nAppState;             /* Application State */
  66.                                    
  67. extern BOOL bToNul;                /* Get to NUL device file */
  68. extern BOOL bFromNul;              /* Put from NUL device file */
  69. extern BOOL bIOBeep;               /* Beep on FD_READ, FD_WRITE */
  70. extern BOOL bDebug;                /* Debug output to WinDebug */
  71. extern BOOL bReAsync;              /* Call WSAAsyncSelect after accept() */
  72. extern BOOL bLogFile;              /* Write Cmds and Replies to logfile */
  73. extern SOCKET hCtrlSock;           /* Ftp control socket */
  74. extern SOCKET hLstnSock;           /* Listening data socket */
  75. extern SOCKET hDataSock;           /* Connected data socket */
  76. extern char szHost[MAXHOSTNAME];   /* Remote host name or address */
  77. extern char szUser[MAXUSERNAME];   /* User ID */
  78. extern char szPWrd[MAXPASSWORD];   /* User password */
  79. extern SOCKADDR_IN stCLclName;     /* Control socket name (local client) */
  80. extern SOCKADDR_IN stCRmtName;     /*                     (remote server) */
  81. extern SOCKADDR_IN stDLclName;     /* Data socket name (local client)*/          
  82. extern SOCKADDR_IN stDRmtName;     /*                  (remote server) */
  83.                               
  84. extern char achInBuf  [INPUT_SIZE];/* Network input data buffer */
  85. extern char achOutBuf [INPUT_SIZE];/* Network output buffer */
  86. extern char szFtpRply [RPLY_SIZE]; /* Ftp reply (input) buffer */
  87. extern char szDataFile[MAXFILENAME];/* Filename */
  88. extern char szFtpCmd  [CMD_SIZE];  /* Ftp command buffer */
  89. extern char achRplyBuf[BUF_SIZE];  /* Reply display buffer */
  90. typedef struct stFtpCmd {
  91.   int   nFtpCmd;                   /* Ftp command value */
  92.   char  szFtpParm[CMD_SIZE];       /* Ftp parameter string */
  93. } FTPCMD;
  94. #define MAX_CMDS 4
  95. /* first one (index=0) is awaiting a reply
  96.  * second (index=1) is next to be sent, etcetera */ 
  97. extern FTPCMD astFtpCmd[MAX_CMDS]; /* Ftp command queue */
  98. extern int nQLen;                  /* Number of entries in Ftp cmd queue */
  99.  
  100. extern int nFtpRplyCode;           /* Ftp reply code from server */
  101. extern int iNextRply;              /* Index to next reply string */
  102. extern int iLastRply;
  103. extern HFILE hDataFile;            /* File handle for open data file */
  104. extern LONG lStartTime;            /* Start time for data transfer */
  105. extern LONG lByteCount;
  106. extern char szLogFile[];           /* Ftp command and reply log file */
  107. extern HFILE hLogFile;
  108. /*------------- Function prototypes --------------*/
  109. BOOL CALLBACK Dlg_Main   (HWND,UINT,UINT,LPARAM); /* Dialog procedures */
  110. BOOL CALLBACK Dlg_Login  (HWND,UINT,UINT,LPARAM);
  111. BOOL CALLBACK Dlg_File   (HWND,UINT,UINT,LPARAM);
  112. BOOL CALLBACK Dlg_Options(HWND,UINT,UINT,LPARAM);
  113. SOCKET InitCtrlConn(PSOCKADDR_IN, HWND, u_int);  /* Control connection */
  114. BOOL QueueFtpCmd(int, LPSTR);
  115. int  SendFtpCmd(void);
  116. void AbortFtpCmd(void);
  117. int  RecvFtpRply(SOCKET, LPSTR, int);
  118. void ProcessFtpRply(LPSTR, int);
  119. SOCKET InitDataConn(PSOCKADDR_IN, HWND, u_int);  /* Data connection */
  120. SOCKET AcceptDataConn(SOCKET, PSOCKADDR_IN);
  121. long SendData(SOCKET*, HFILE, int);
  122. int  RecvData(SOCKET, HFILE, LPSTR, int);
  123. void EndData(void);
  124. void not_connected(void);                        /* Utility functions */
  125. int  CloseFtpConn(SOCKET*, LPSTR, int, HWND);