• 大小: 6KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: C/C++
  • 标签: ftp  c  

资源简介

用C语言编写FTP程序,并实现几个简单的功能。例如DIR MV 等

资源截图

代码片段和文件信息

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

#define TRUE 1
#define dataLen 1024
char user_cmd[10]cmd_arg[20];
char buf[dataLen];

void cmd_pwd(int sockint sockmsg);
void cmd_dir(int sockint sockmsg);
void cmd_cd(int sockint sockmsgchar *dirName);
void cmd_cdback(int sockint sockmsg);
void cmd_help(int sockint sockmsg);
void cmd_get(int sockint sockmsgchar *fileName);
void cmd_put(int sockint sockmsgchar *fileName);
void cmd_quit(int sockint sockmsg);

int main(int argcchar *argv[])
{
  int cmd_lenarg_len;
  int sock sockmsg;
  struct sockaddr_in server servermsg;
  struct hostent *hp;
  
  sock=socket(AF_INETSOCK_STREAM0);
  sockmsg=socket(AF_INETSOCK_STREAM0);
  
  if (sock<0||sockmsg<0)
  {
perror(“opening stream socket“);
exit(1);
  }

  hp = gethostbyname(argv[1]);
  if (hp==0)
  {
fprintf(stderr“%s:unknown host\n“argv[1]);
exit(2);
  }

  server.sin_family=AF_INET;
  server.sin_port=htons(atoi(argv[2]));
  memcpy((char*)&server.sin_addr (char*)hp->h_addr hp->h_length);
  
  servermsg.sin_family=AF_INET;
  servermsg.sin_port=htons(atoi(argv[2])+1);
  memcpy((char*)&servermsg.sin_addr (char*)hp->h_addr hp->h_length);

  if (connect(sock(struct sockaddr *)&serversizeof server)<0||connect(sockmsg(struct sockaddr *)&servermsgsizeof servermsg)<0)
  {
  perror(“connecting stream socket“);
exit(1);
  }
  
  
  //Get command from command line and do just the action
  while(TRUE)
  {
memset(user_cmd010);
memset(cmd_arg020);

//First get the input character by user
printf(“command: “);
scanf(“%s“user_cmd);
cmd_len=strlen(user_cmd);
//Then get the command character and the argument
if(strcmp(user_cmd“quit“)==0)     //command “quit“
{
cmd_quit(socksockmsg);
close(sockmsg);
close(sock);
printf(“connection closed\n\n“);
exit(0);
}  
else if(strcmp(user_cmd“?“)==0)   //command “?“
{
cmd_help(socksockmsg);
}
else if(strcmp(user_cmd“pwd“)==0)  //command “pwd“
{
cmd_pwd(socksockmsg);
}
else if(strcmp(user_cmd“dir“)==0)   //command “dir“
{
cmd_dir(socksockmsg);
}
else if(strcmp(user_cmd“cd“)==0) //commad “cd“
{
//input command argument
scanf(“%s“cmd_arg);
cmd_cd(socksockmsgcmd_arg);
}
else if(strcmp(user_cmd“cd..“)==0)
{
cmd_cdback(socksockmsg);
}
else if(strcmp(user_cmd“get“)==0) //command “get“
{
//input command argument
scanf(“%s“cmd_arg);
cmd_get(socksockmsgcmd_arg);
}
else if(strcmp(user_cmd“put“)==0) //command “put“
{
//input command argument
scanf(“%s“cmd_arg);
cmd_put(socksockmsgcmd_arg);
}
else
{
printf(“bad command!\n“);
}
  }  

}

//command pwd
void cmd_pwd(int sockint sockmsg)
{
//int numRead;
char dirName[30];
write(sockmsguser_cmdsizeof(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6172  2010-12-13 20:57  ftp function\ftp.c

     文件       9072  2010-12-22 14:26  ftp function\server .c

     文件       5836  2011-01-25 11:22  ftp function\tftp_service.c

     目录          0  2011-05-17 21:42  ftp function

----------- ---------  ---------- -----  ----

                21080                    4


评论

共有 条评论