#include "client.h"
int sock;
struct hostent *hp;
struct sockaddr_in addr;
int result;
char CMD[CMD_LEN];
char data[BUFFER_SIZE];
char safeguard = '\0';
FILE* file;
void userName(char* user)
{
memset(CMD, 0, sizeof(CMD));
strcpy(CMD, "user ");
strcat(CMD, user);
strcat(CMD, "\r\n");
if ((result = write(sock, CMD, strlen(CMD))) < 0){
printf("[err] Sending USER failed!");
}
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s",CMD);
}
void passwd(char* passwd)
{
memset(CMD, 0, sizeof(CMD));
strcat(CMD, "pass ");
strcat(CMD, passwd);
strcat(CMD, "\r\n");
if ((result = write(sock, CMD, strlen(CMD))) < 0){
printf("[err] Recv PASSWORD failed!\n");
}
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s",CMD);
}
void put(char* filename)
{
memset(CMD, 0, sizeof(CMD));
strcat(CMD, "pasv\r\n");
if ((result = write(sock, CMD, strlen(CMD))) < 0)
{
printf("[err] Sending data failed!\n");
}
memset(CMD, 0 , sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
int ip1, ip2, ip3, ip4, port1, port2;
char tmp[CMD_LEN];
char *buff = (char *)alloca(CMD_LEN);
memset(buff, 0 , sizeof(buff));
memset(tmp, 0 , sizeof(tmp));
strcpy(tmp, CMD);
buff = strchr(tmp, '(');
sscanf(buff, "(%d,%d,%d,%d,%d,%d", &ip1, &ip2, &ip3, &ip4, &port1, &port2);
int port;
port = port1 * 256 + port2;
int tempSock;
tempSock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in tempAddr;
bzero(&tempAddr, sizeof(struct sockaddr_in));
tempAddr.sin_family = AF_INET;
tempAddr.sin_port = htons(port);
bcopy(hp->h_addr, (char *)&tempAddr.sin_addr, hp->h_length);
int conn;
conn = connect(tempSock, (struct sockaddr*)&tempAddr, sizeof(tempAddr));
if (conn < 0){
perror("[err] Connect failed!\n");
}
memset(CMD, 0, sizeof(CMD));
strcat(CMD, "type i\r\n");
result = write(sock, CMD, strlen(CMD));
if (result < 0){
printf("[err] Sending CMD failed!\n");
}
memset(CMD, 0 , sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
memset(CMD, 0 , sizeof(CMD));
strcpy(CMD, "stor ");
strcat(CMD, filename);
strcat(CMD, "\r\n");
result = write(sock, CMD, strlen(CMD));
if (result < 0){
printf("[err] Sending CMD failed!\n");
}
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
result = 1;
FILE* file = fopen(filename, "rb");
memset(data, 0, sizeof(data));
while (result = fread(data, sizeof(char), BUFFER_SIZE, file))
{
write(tempSock, data, result);
memset(data, 0, sizeof(data));
}
fclose(file);
close(tempSock);
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
}
void get(char* filename)
{
memset(CMD, 0, sizeof(CMD));
strcat(CMD, "pasv\r\n");
result = write(sock, CMD, strlen(CMD));
if (result < 0){
printf("[err] Sending CMD failed!\n");
}
memset(CMD, 0 , sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
int ip1, ip2, ip3, ip4, port1, port2;
char tmp[CMD_LEN];
char *buff = (char *)alloca(CMD_LEN);
memset(buff, 0 , sizeof(buff));
memset(tmp, 0 , sizeof(tmp));
strcpy(tmp, CMD);
buff = strchr(tmp, '(');
sscanf(buff, "(%d,%d,%d,%d,%d,%d", &ip1, &ip2, &ip3, &ip4, &port1, &port2);
int port;
port = port1 * 256 + port2;
int tempSock;
tempSock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in tempAddr;
bzero(&tempAddr, sizeof(struct sockaddr_in));
tempAddr.sin_family = AF_INET;
tempAddr.sin_port = htons(port);
bcopy(hp->h_addr, (char *)&tempAddr.sin_addr, hp->h_length);
int conn;
conn = connect(tempSock, (struct sockaddr*)&tempAddr, sizeof(tempAddr));
if (conn < 0){
perror("[err] Connect failed!\n");
}
memset(CMD, 0, sizeof(CMD));
strcat(CMD, "type i\r\n");
result = write(sock, CMD, strlen(CMD));
if (result < 0)
{
printf("[err] Sending CMD failed!\n");
}
memset(CMD, 0 , sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
memset(CMD, 0 , sizeof(CMD));
strcpy(CMD, "retr ");
strcat(CMD, filename);
strcat(CMD, "\r\n");
result = write(sock, CMD, strlen(CMD));
if (result < 0){
printf("[err] Sending CMD failed!\n");
}
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
FILE* file = fopen(filename, "w");
while (result > 0){
memset(data, 0 , sizeof(data));
result = read(tempSock, data, BUFFER_SIZE);
fwrite(data, sizeof(char), result, file);
}
fclose(file);
close(tempSock);
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
}
void pwd()
{
memset(CMD, 0, sizeof(CMD));
strcat(CMD, "pwd");
strcat(CMD, "\r\n");
if ((result= write(sock, CMD, strlen(CMD))) < 0){
printf("[err] Sending CMD failed!");
}
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s",CMD);
}
void cd(char* cwd)
{
memset(CMD, 0, sizeof(CMD));
char end[CMD_LEN];
strcpy(end, cwd);
strcpy(CMD, "cwd ");
strcat(CMD, end);
strcat(CMD, "\r\n");
result = write(sock, CMD, strlen(CMD));
if (result < 0){
printf("[err] Sending CMD failed!\n");
}
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s",CMD);
}
void dir(char* path)
{
memset(CMD, 0, sizeof(CMD));
strcat(CMD, "pasv\r\n");
result = write(sock, CMD, strlen(CMD));
if (result < 0){
printf("[err] Sending CMD failed!\n");
}
memset(CMD, 0 , sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
int ip1, ip2, ip3, ip4, port1, port2;
char tmp[CMD_LEN];
char *buff = (char *)alloca(CMD_LEN);
memset(buff, 0 , sizeof(buff));
memset(tmp, 0 , sizeof(tmp)); //init
strcpy(tmp, CMD);
buff = strchr(tmp, '(');
sscanf(buff, "(%d,%d,%d,%d,%d,%d", &ip1, &ip2, &ip3, &ip4, &port1, &port2);
int port;
port = port1 * 256 + port2;
int tempSock;
tempSock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in tempAddr;
bzero(&tempAddr, sizeof(struct sockaddr_in));
tempAddr.sin_family = AF_INET;
tempAddr.sin_port = htons(port);
bcopy(hp->h_addr, (char *)&tempAddr.sin_addr, hp->h_length);
int conn;
conn = connect(tempSock, (struct sockaddr*)&tempAddr, sizeof(tempAddr));
if (conn < 0){
perror("[err] Connect failed!\n");
}
result = 1;
memset(CMD, 0 , sizeof(CMD));
strcpy(CMD, "list ");
strcat(CMD, path);
strcat(CMD, "\r\n");
result = write(sock, CMD, strlen(CMD));
if (result < 0){
printf("[err] Sending CMD failed!\n");
}
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN);
printf("-> ");
printf("%s", CMD);
while (result > 0){
memset(data, 0 , sizeof(data));
result = read(tempSock, data, BUFFER_SIZE);
printf("%s", data);
}
close(tempSock);
memset(CMD, 0, sizeof(CMD));
result = read(sock, CMD, CMD_LEN)
FTP.rar_FTP 命令通道_FreeChat-ssl_Linux下 文件传输_Linux命令_ftp implement
版权申诉
46 浏览量
2022-09-22
20:14:16
上传
评论
收藏 5KB RAR 举报
Kinonoyomeo
- 粉丝: 74
- 资源: 1万+
最新资源
- 基于matlab实现图像处理,本程序使用背景差分法对来往车辆进行检测和跟踪.rar
- 基于matlab实现视频监控中车型识别代码,自己写的,希望和大家多多交流.rar
- sdk.config
- 基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
- 基于matlab实现配电网潮流 经典33节点 前推回代法潮流计算 回代电流 前推电压 带注释.rar
- 基于matlab实现模拟退火遗传算法的车辆调度问题研究,用MATLAB语言加以实现.rar
- 基于matlab实现蒙特卡洛的的移动传感器节点定位算法仿真代码.rar
- 华中数控系统818用户说明书
- 基于matlab实现卡尔曼滤波器完成多传感器数据融合 对多个机器人的不同传感器数据进行融合估计足球精确位置.rar
- 基于matlab实现进行简单车辆识别-车辆检测.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0