加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
command.c 1.91 KB
一键复制 编辑 原始数据 按行查看 历史
SpaceX_zhao 提交于 2023-05-17 12:00 . alopex modify
#include "head.h"
int execCommand(int netfd, struct userProcess_s *user){
//char *command[] = {"cd", "ls", "pwd", "mkdir", "rmdir", "puts", "gets", "remove", "end"};
train_t train;
bzero(&train, sizeof(train));
// 接收命令的类型
int commandID;
recvn(netfd, &commandID, sizeof(int));
// 接收参数的长度
recvn(netfd, &train.length, sizeof(train.length));
// 接收参数内容
recvn(netfd, train.data, train.length);
int ret;
// 判断命令类型
switch (commandID){
case 0: // 执行cd
LOGRECORD(INFO, "cd");
ret = changeusrPath(train.data, user);
send(netfd, &ret, sizeof(int), MSG_NOSIGNAL);
break;
case 1: // 执行ls
LOGRECORD(INFO, "ls");
ls(netfd, user);
break;
case 2: // 执行pwd
LOGRECORD(INFO, "pwd");
printfCurrPath(netfd,user);
break;
case 3: // 执行mkdir
LOGRECORD(INFO, "mkdir");
ret = mkDir(train.data,user);
send(netfd, &ret, sizeof(int), MSG_NOSIGNAL);
break;
case 4: // 执行rmdir
LOGRECORD(INFO, "rmdir");
ret = rmDir(train.data,user);
send(netfd, &ret, sizeof(int), MSG_NOSIGNAL);
break;
case 5: // 客户端执行了puts上传,服务端接收
LOGRECORD(INFO, "puts");
ret = recvFile(netfd);
send(netfd, &ret, sizeof(int), MSG_NOSIGNAL);
break;
case 6: // 客户端执行了gets下载,服务端发送
LOGRECORD(INFO, "gets");
ret = sendFile(netfd, train.data);
send(netfd, &ret, sizeof(int), MSG_NOSIGNAL);
break;
case 7: // 执行remove
LOGRECORD(INFO, "remove");
deleteServerFile(train.data);
//rmFile(train.data, user);
send(netfd, &ret, sizeof(int), MSG_NOSIGNAL);
break;
case 8:
close(netfd);
return -1;
default:
break;
}
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化