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

📄 cli.c

📁 基于TCP的控制台下局域网ftp(C/S),能够实现简单ftp命令。具有简单的客户端身份认证功能。内含简单的makefile文件
💻 C
字号:
#include "client.h"

void cmd_quit(int sock,int sockmsg);
void cmd_help(int sock,int sockmsg);
void cmd_put(int sock,int sockmsg,char* fileName);
int   getPasswd(char   *passwd);
   
 
char user_cmd[10],cmd_arg[20];
char buf[dataLen];

char usr_msg_1[]="please enter the username:";
 char usr_msg_2[]="please enter the password:";
 char usr_msg_3[]="the user name or password error!";
 char usr_msg_4[]="welcome! have fun!";
 char usr_msg[50];

/**********quit命令************/
/******************************/

void cmd_quit(int sock,int sockmsg)
	{
	 write(sockmsg,user_cmd,sizeof(user_cmd));
	}



/************help*************/
/*****************************/

void cmd_help(int sock, int sockmsg)
	{
	 char help[300];
	 write(sockmsg,user_cmd,sizeof(user_cmd));
	 read(sock,help,300);

	 printf("%s\n",help); 
	}


/************put实现上传************/
/***********************************/

void cmd_put(int sock,int sockmsg,char* fileName)
	{ 
	  write(sockmsg,user_cmd,sizeof(user_cmd));
	  write(sockmsg,cmd_arg,sizeof(cmd_arg));

	  int fd;
	  long fileSize;
	  int numread;
	  char filePath[200];
	  struct stat fileSta;

	  memset(filePath,0,sizeof(filePath));
	  getcwd(filePath,sizeof(filePath));

	  strcat(filePath,"/");
	  strcat(filePath,fileName);

	  fd=open(filePath,O_RDONLY, S_IREAD);

	  if(fd!=-1)
		{
		  fstat(fd,&fileSta);
	   	  fileSize=(long) fileSta.st_size;

		  write(sock,&fileSize,sizeof(long));
		  memset(buf,0,dataLen);
	 	  while(fileSize>0)
			{
		  	 numread=read(fd,buf,dataLen);
		 	 write(sock,buf,numread);
	  	 	 fileSize=fileSize-numread;
			}

	  	  close(fd);
	  	  printf("Upload completed\n");
		}
	else
	 {
	  printf("open file %s failed\n",filePath);
	 } 
}

/************获取密码***********/
/*******************************/

  int   getPasswd(char   *passwd)   
  {   
                  struct   termio   tbuf_old,tbuf;   
    
                  ioctl(0,   TCGETA,   &tbuf_old);   
                  ioctl(0,   TCGETA,   &tbuf);   
                  tbuf.c_lflag   &=~ECHO;   
                  if   (ioctl(0,   TCSETAF,   &tbuf)   !=   0)   
            return;   
                    
                  printf("please   input   passwd:");   
                  scanf("%s",   passwd);   
                  ioctl(0,   TCSETAF,   &tbuf_old);   
                  return   0;   
  } 

⌨️ 快捷键说明

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