📄 ser.c
字号:
#include "server.h"
void cmd_put(int sock,char *fileName);
void cmd_help(int sock);
int usrcheck ( int usrchecksock);
int rval,i,j;
char client_cmd[10] , cmd_arg[20] ,usr_msg[50];
char currentDirPath[200];
char currentDirName[30];
struct usrcheck
{
char usrname[20];
char psword[10];
};
struct usrcheck usr_psword_check[4]={{"root","123456"},{"linqiangyun","fengyun"},{"fanchao","123456"},{"redhat","123456"}};
char usr_msg_1[50]="please enter the username:";
char usr_msg_2[50]="please enter the password:";
char usr_msg_4[50]="welcome! have fun!";
char help[300]="***Use <put> to upload a file to server\n***Use <help> to get help\n***Use <quit> to exit\n";
/***************help**************/
/*********************************/
void cmd_help(int sock)
{
write(sock,help,sizeof help);
}
/*******读取数据实现发送端上传*******/
/************************************/
void cmd_put(int sock,char *fileName)
{
int fd,numread;
long fileSize;
char filePath[200], buf[dataLen];
strcpy(filePath,currentDirPath);
strcat(filePath,"/");
strcat(filePath,fileName);
fd=open(filePath,O_RDWR|O_CREAT, S_IREAD|S_IWRITE);
if(fd!=-1)
{
memset(buf,0,dataLen);
read(sock,&fileSize,sizeof(long));
while(fileSize>0)
{
numread=read(sock,buf,dataLen);
write(fd,buf,numread);
fileSize=fileSize-numread;
}
close(fd);
printf("Transfer completed\n");
}
else
{
printf("open file >s failed\n",filePath);
}
}
/****************用户验证*************/
/*************************************/
int usrcheck ( int usrchecksock)
{
printf("Waiting for user enter username and password!\n");
rval=0;
int i;
rval=write(usrchecksock,usr_msg_1,sizeof usr_msg_1);
if ( rval<0 || rval==0)
{
perror("write\n");
return 0;
}
memset(usr_msg,0,sizeof usr_msg);
rval=read(usrchecksock,usr_msg,sizeof usr_msg);
if ( rval<0 || rval==0)
{
perror("read\n");
return 0;
}
for ( i=0;i<4;i++)
{
if(strcmp(usr_msg,usr_psword_check[i].usrname)==0)
{
rval=write(usrchecksock,usr_msg_2,sizeof usr_msg_2);
if(rval<0||rval==0)
{
perror("write\n");
return 0;
}
else break;
}
}
/*Usrname error*/
if ( i==4)
{return 0;}
memset(usr_msg,0,sizeof usr_msg);
rval=read(usrchecksock,usr_msg,sizeof usr_msg);
if ( rval<0 || rval==0)
{
perror("read passwd error\n");
return 0;
}
if ( strcmp(usr_msg,usr_psword_check[i].psword)==0)
{
printf("correct password!now waiting for commands!\n");
rval=write(usrchecksock,usr_msg_4,sizeof usr_msg_4);
if ( rval<0 || rval==0)
{
perror("write\n");
return 0;
}
else
{
close(usrchecksock);
return 1;
}
}
else
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -