提交 05ecd4a7 编写于 作者: 龙的传人科龙's avatar 龙的传人科龙

2.0版本完成

上级 8bc9a77f
......@@ -166,21 +166,6 @@ void Shell()
}
}
void ReturnFile(char *filename)
{
// char cmd[32];
// memset(cmd, 0, sizeof(cmd));
// strcpy(cmd, "return fetch");
// write(serv_sock, cmd, strlen(cmd)); //返回命令
sleep(1);
char name[32];
// strcpy(name, filename);
sprintf(name, "%s", filename);
//write(serv_sock, name, 32);
Read_a_send(filename);
}
void Excute()
{
//system("echo \"\" > cmd.txt ");
......@@ -194,6 +179,15 @@ void Excute()
system("cat cmd.txt");
}
void ReturnFile(char *filename)
{
sleep(1);
char name[32];
if (filename != NULL)
sprintf(name, "%s", filename);
Read_a_send(filename);
}
void Read_a_send(char *p)
{
char filename[32];
......@@ -273,50 +267,6 @@ void RecvFile(char *filename)
puts("End of Recv\n");
}
void Read(char *p)
{
char filename[32];
sprintf(filename, "%s", p);
FILE *fp;
int totlen;
char Recvbuf[buf_SIZE];
if ((fp = fopen(filename, "rb")) == NULL)
{
puts("fopen() error\n");
return;
}
fseek(fp, 0, SEEK_END);
totlen = ftell(fp);
//发送文件长度,方便服务器
memset(Recvbuf, 0, sizeof(Recvbuf));
sprintf(Recvbuf, "%d", totlen);
send(serv_sock, Recvbuf, strlen(Recvbuf) + 1, 0);
int cnt = totlen / SIZE;
int len1 = SIZE;
int lenlast;
if (totlen % SIZE)
{
lenlast = totlen - cnt * SIZE;
cnt = cnt + 1;
}
rewind(fp);
for (int i = 0; i < cnt - 1; i++)
{
fread(Recvbuf, SIZE, 1, fp);
sleep(0.1);
send(serv_sock, Recvbuf, SIZE, 0);
memset(Recvbuf, 0, sizeof(Recvbuf));
}
fread(Recvbuf, lenlast, 1, fp);
fclose(fp);
send(serv_sock, Recvbuf, lenlast, 0);
}
void error_handling(char *message)
{
printf("%s", message);
......
......@@ -210,14 +210,13 @@ void Message_handle(int sock)
void Execute(int sock, int cmd_len)
{
char prefix[] = "echo 8002904 | sudo -S";
//char backfix[] = "> cmd.txt 2>&1";
char backfix[] = " 2>&1";
char cmd_buf[BUF_SIZE + 40];
char tmp[BUF_SIZE];
memset(tmp, 0, sizeof(tmp));
strncpy(tmp, buf + 1, strlen(buf) - 1);
tmp[cmd_len - 1] = '\0';
printf("tmp == %s\n", tmp);
//printf("tmp == %s\n", tmp);
sprintf(cmd_buf, "%s %s %s", prefix, tmp, backfix);
puts(cmd_buf);
......@@ -251,7 +250,6 @@ void Recv_a_Send(int sock, char *p)
error_handling("fopen() error\n");
int cnt = 0;
sleep(1);
while (1)
{
memset(recvBuf, 0, sizeof(recvBuf));
......@@ -318,39 +316,6 @@ void Recvfile(int sock, char *p)
fclose(fp);
}
void Fetch(int sock, int cmd_len)
{
char prefix[] = "echo 8002904 | sudo -S";
char backfix[] = " 2>&1";
char cmd_buf[BUF_SIZE + 40];
char tmp[BUF_SIZE];
memset(tmp, 0, sizeof(tmp));
strncpy(tmp, buf + 1, strlen(buf) - 1);
tmp[cmd_len - 1] = '\0';
printf("tmp == %s\n", tmp);
sprintf(cmd_buf, "%s %s %s", prefix, tmp, backfix);
puts(cmd_buf);
if (telnet_sock > -1)
write(telnet_sock, cmd_buf, strlen(cmd_buf));
char create_cmd[64];
sprintf(create_cmd, "%s %s", "touch", Filename);
int ret = system(create_cmd);
if (ret == -1)
{
puts(create_cmd);
puts("error");
return;
}
//先发命令给 主动的客户端
Recvfile(sock, "world.txt");
sleep(2);
Sendfile(sock, "world.txt");
}
void Sendfile(int sock, char *p)
{
char ret_cmd[64] = "echo return return return return return return";
......@@ -400,6 +365,39 @@ void Sendfile(int sock, char *p)
send(sock, Recvbuf, lenlast, 0);
}
void Fetch(int sock, int cmd_len)
{
char prefix[] = "echo 8002904 | sudo -S";
char backfix[] = " 2>&1";
char cmd_buf[BUF_SIZE + 40];
char tmp[BUF_SIZE];
memset(tmp, 0, sizeof(tmp));
strncpy(tmp, buf + 1, strlen(buf) - 1);
tmp[cmd_len - 1] = '\0';
printf("tmp == %s\n", tmp);
sprintf(cmd_buf, "%s %s %s", prefix, tmp, backfix);
puts(cmd_buf);
if (telnet_sock > -1)
write(telnet_sock, cmd_buf, strlen(cmd_buf));
char create_cmd[64];
sprintf(create_cmd, "%s %s", "touch", Filename);
int ret = system(create_cmd);
if (ret == -1)
{
puts(create_cmd);
puts("error");
return;
}
//先发命令给 主动的客户端
Recvfile(sock, "world.txt");
sleep(2);
Sendfile(sock, "world.txt");
}
void Server_ls(int sock)
{
for (int k = 0; k < clnt_cnt; k++)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册