• 大小: 80KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: linux  

资源简介

基于linux下的服务器 可完成上传下载等一系列功能

资源截图

代码片段和文件信息

#include “com.h“
#include “pub.h“
#include “hash.h“


int data_conn_sock;    //数据连接通道
int pasv_connsock;     //做PASV时那个套接口

char up_com[10] ;      //记上一条命令到底是PASV还是PORT用的
char port_ip[50] ;      //PORT命令处理完后记IP用的
int port_port ;         // PORT 命令处理完后记port用的
char refilename[100];   // 文件重命名
long rest_long;           //断点续传的长度

long transfer_data_now;   //从开始到现在的发送字节数
long transfer_data_last;  //从开始到上一次的发送字节数
float limit_speed;         //上传下载的限制速度


/*
 *函数功能:收到客户端发过来的USER命令进行处理的
 *输入参数:CONNSESSION *nowssion:存放着客户端发过来的各种参数路径
 *返回值: 无
*/

void ftp_user(CONNSESSION *nowssion)
{
strcpy(connusernowssion->charm);
//printf(“11.name %s\n“connuser);
write_loop(connfd “331 please specify password\r\n“ strlen(“331 please specify password\r\n“));

}


/*
 *函数功能:收到客户端发过来的PASS命令进行处理的
 *输入参数:CONNSESSION *nowssion:存放着客户端发过来的各种参数路径
 *返回值: 无
*/

void ftp_pass(CONNSESSION *nowssion)
{
int res;
if(strcmp(connuser “anonymous“) != 0)
{
res = checkpass(connusernowssion->charm);
if (res == 1)
write_loop(connfd “230 Login successful\r\n“ strlen(“230 Login successful\r\n“));
else
write_loop(connfd “the pass is error!\r\n“ strlen(“the pass is error!\r\n“));
setegid_euid(connuser0);

}
else
{
write_loop(connfd “230 Login successful\r\n“ strlen(“230 Login successful\r\n“));
chdir(“/var/ftp“);

}



}

/*
 *函数功能:收到客户端发过来的SYST命令进行处理的
 *输入参数:CONNSESSION *nowssion:存放着客户端发过来的各种参数路径
 *返回值: 无
*/

void ftp_syst(CONNSESSION *nowssion)
{
write_loop(connfd “215 UNIX Type: L8\r\n“ strlen(“215 UNIX Type: L8\r\n“));

}

/*
 *函数功能:收到客户端发过来的PWD命令进行处理的 把路径封装好发给客户端
 *输入参数:CONNSESSION *nowssion:存放着客户端发过来的各种参数路径
 *返回值: 无
*/

void ftp_pwd(CONNSESSION *nowssion)
{
char nowdir[100] = ““;
char tempstr[200] = ““;
//chdir(nowssion->dir);
if(strcmp(connuser “anonymous“) != 0)
{
sprintf(tempstr “257 \“%s\“\r\n“ nowssion->dir);
}
else
{
if(strcmp(nowssion->dir “/var/ftp“) == 0)
strcpy(tempstr “257 \“/\“\r\n“);
else
{
sprintf(tempstr “257 \“%s\“\r\n“ nowssion->dir+8);
}
}


write_loop(connfd tempstrstrlen(tempstr));
// write_loop(connfd “257 test\r\n“ sizeof(“257 test\r\n“));


}

/*
 *函数功能:收到客户端发过来的TYPE命令进行处理的  
 *输入参数:CONNSESSION *nowssion:存放着客户端发过来的各种参数路径
 *返回值: 无
*/

void ftp_type(CONNSESSION *nowssion)
{
if(strcmp(nowssion->charm “A“)==0)
write_loop(connfd “200 Switching to ASCII mode\r\n“ strlen(“200 Switching to ASCII mode\r\n“));
else
write_loop(connfd “200 Switching to binary system mode\r\n“ strlen(“200 Switching to binary system mode\r\n“));

}

/*
 *函数功能:收到客户端发过来的CWD命令进行处理的   进入到指定目录
 *输入参数:CONNSESSION *nowssion:存放着客户端发过来的各种参数路径
 *返回值: 无
*/

//进目录
void ftp_cwd(CONNSESSION *nowssion)
{
if(strcmp(connuser “root“) != 0 )
{
if(strcmp(nowssion->charm “root“) == 0 || strcmp(nowssion->charm “/root/“) == 0)
{
write_loop(connfd “550 Failed to change directory.\r\

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-06-14 17:01  wzyftp\
     文件       22287  2013-07-08 22:43  wzyftp\com.c
     文件        1513  2013-07-06 15:00  wzyftp\com.h
     文件       27128  2013-07-09 19:15  wzyftp\com.o
     文件         187  2013-07-09 19:15  wzyftp\ftp.conf
     文件        6124  2013-07-07 19:52  wzyftp\hash.c
     文件        1048  2013-07-02 17:56  wzyftp\hash.h
     文件       10388  2013-07-09 19:15  wzyftp\hash.o
     文件         160  2013-07-03 15:50  wzyftp\makefile
     文件       63104  2013-07-09 19:19  wzyftp\myftp
     文件         170  2013-06-28 23:31  wzyftp\myftp.c
     文件        2400  2013-07-09 19:15  wzyftp\myftp.o
     文件       12957  2013-06-28 16:43  wzyftp\pp
     文件       10646  2013-07-08 22:30  wzyftp\pub.c
     文件        1616  2013-07-03 15:50  wzyftp\pub.h
     文件       15528  2013-07-09 19:15  wzyftp\pub.o
     文件       11722  2013-07-09 19:19  wzyftp\ser.c
     文件       11722  2013-07-09 19:19  wzyftp\ser.c.bak
     文件         614  2013-07-03 15:50  wzyftp\ser.h
     文件       15872  2013-07-09 19:19  wzyftp\ser.o

评论

共有 条评论