资源简介

我自己的毕业设计作品,比较初级的东西,但是实现了上下传文件,目录管理相关的一些操作.仅供新手参考.实现的命令有USER PASS QUIT PASV TYPE PWD CWD LIST RETR STOR

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include  
#include 
#include 
#include  
#include 
#include 
#include 
#include 

#define FTP_DEFAULT_PORT 21

#define SUCCESS 0

#define MAX_STR_LEN 64

#define MAX_BUF_LEN 4096

#define MAX_FILE_NAME 255



/* Global Variables */
struct sockaddr_in Ftp_Server_ctrl_addr;   /*server‘s address for ctrl connection*/

struct sockaddr_in Ftp_Server_data_addr;   /*server‘s address for data connection*/

int sockfd_ctrl;           /* socket for control connection */

int sockfd_data;           /* socket for data connection */

char ServerIP[MAX_STR_LEN];      /* Server‘s ip */
 
int ServerPort;      /* Server‘s port */
  
char User[MAX_STR_LEN];       /* user‘s  account for logining*/

char Password[MAX_STR_LEN];   /* user‘s password for logining*/

char MsgBuffer[MAX_BUF_LEN];

char DataBuffer[MAX_BUF_LEN];

static struct termios stored_settings;

/* print error imformation and exit program */
int ErrorExit(const char* error)
{
  printf(“Error: %s\n“error);
  exit(-1);
}
/* 
void echo_off(void)
{
struct termios new_settings;
   tcgetattr(0&stored_settings);
    new_settings = stored_settings;
new_settings.c_lflag &= (~ECHO);
tcsetattr(0TCSANOW&new_settings);
return;
}
void echo_on(void)
{
tcsetattr(0TCSANOW&stored_settings);
return;
}
*/






/*********************************************send and receive message************************************************/

/*     send control command to server with specified socket descriptor 
 *     COMMAND   or   COMMAND  
 *     example: “USER anonymous\r\n“  or   “PWD\r\n“
 */    
int SendControlCommand(const char* cmd_code const char* cmd_para)// test ok  by myself
{
char SendBuffer[MAX_BUF_LEN];
int Length;
int SendRes;
memset(SendBuffer 0 MAX_BUF_LEN);
if(cmd_code)
{
strcpy(SendBuffercmd_code);
if(cmd_para)
{
      strcat(SendBuffer“ “);
strcat(SendBuffercmd_para);
strcat(SendBuffer“\r\n“);
}
else
strcat(SendBuffer“\r\n“);

Length=strlen(SendBuffer);
SendRes = write(sockfd_ctrlSendBufferLength);
}
return SendRes;
}

/* get reply message from server */                 //test ok
int GetReplyMsg(void)
{
  int count;
  int reply;
  memset(MsgBuffer 0 MAX_BUF_LEN);
  count = read(sockfd_ctrlMsgBufferMAX_BUF_LEN);
  reply = atoi(MsgBuffer);
  printf(“[Server reply]    %s“ MsgBuffer);
  return reply;
}




/*************************************** login************************************/

/* get user‘s account from stdin */
void GetUserAccount(void)                       //test ok
{
  char buf[MAX_BUF_LEN];
  printf(“User:(Press Enter for anonymous):“);
fgets(bufsizeof(buf)stdin);
if(buf[0]==‘\n‘)
strncpy(User“anonymous“9);
else
strncpy(Userbufstrlen(buf)-1);
// printf(“User:%s\n“User);

}

/* get user‘s password from stdin*/
void GetUserPasswd(void)           

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       17499  2011-05-19 19:01  client
     文件       13655  2011-05-19 23:14  client.c

评论

共有 条评论