资源简介
N年前写的FTP客户端,练习程序,支持常用命令,支持PASV与PORT模式
对应的服务器端为:
http://download.csdn.net/source/2724443
代码片段和文件信息
/*****************************************************************************/
/* file name: dir_list.c */
/* author: Tao Tong */
/* function: create a list to store directories and find the sub dir */
/*****************************************************************************/
#include
#include
#include
#include
#include
#include
#include “dir_list.h“
dir_list* create_dir_list(int length int dir_is_local)
{
dir_list* p_dir_list = (dir_list*)malloc(sizeof(dir_list));
p_dir_list->list = (dir_node**)malloc(sizeof(dir_node*) * length);
p_dir_list->count = 0;
if (dir_is_local)
p_dir_list->is_local = 1;
else
p_dir_list->is_local = 0;
return (p_dir_list);
}
dir_node* create_dir_node(char* up_level_name char* dir_name)
{
dir_node* p = (dir_node*)malloc(sizeof(dir_node));
p->dir_name = (char*)malloc(sizeof(char) * (strlen(up_level_name) + strlen(dir_name)) + 4);
strcpy(p->dir_name up_level_name);
if (strlen(p->dir_name) > 0) strcat(p->dir_name “/“);
strcat(p->dir_name dir_name);
p->is_dir = 0;
return (p);
}
int add_dir_list(dir_list* p_dir_list char* up_level_name char* dir_name)
{
p_dir_list->list[p_dir_list->count] = create_dir_node(up_level_name dir_name);
if (p_dir_list->is_local)
{
p_dir_list->list[p_dir_list->count]->is_dir = local_is_dir(p_dir_list->list[p_dir_list->count]->dir_name);
}
p_dir_list->count++;
return (p_dir_list->count);
}
int modify_last_node_to_dir(dir_list* p_dir_list)
{
p_dir_list->list[p_dir_list->count - 1]->is_dir = 1;
return (0);
}
int get_last_node_mode(dir_list* p_dir_list)
{
return (p_dir_list->list[p_dir_list->count - 1]->is_dir);
}
char* get_last_node_name(dir_list* p_dir_list)
{
return (p_dir_list->list[p_dir_list->count - 1]->dir_name);
}
int clean_dir_list(dir_list* p_dir_list)
{
int i = 0;
for (i = 0; i < p_dir_list->count; i++)
{
free(p_dir_list->list[i]->dir_name);
free(p_dir_list->list[i]);
}
free(p_dir_list->list);
free(p_dir_list);
return (0);
}
int local_is_dir(char* dirname)
{
struct stat buf;
stat(dirname &buf);
// printf(“local_is_dir: %s\n“ dirname);
return S_ISDIR(buf.st_mode);
}
int get_dir_list(dir_list* p_dir_list char* cur_dir)
{
DIR* pdir;
struct dirent* pdirent;
if (NULL == (pdir = opendir(cur_dir)))
{
perror(“opendir“);
return (-1);
}
while (NULL != (pdirent = readdir(pdir)))
{
if (!strcmp(pdirent->d_name “.“) || !strcmp(pdirent->d_name “..“)) continue;
add_dir_list(p_dir_list cur_dir pdirent->d_name);
if (get_last_node_mode(p_dir_list))
{
get_dir_list(p_dir_list get_last_node_name(p_dir_list));
}
}
closedir(pdir);
return (0);
}
- 上一篇:51单片机设计交通灯仿真C程序.rar
- 下一篇:变量名的力量部分
相关资源
- QT4实现的给予QFTP类的FTP客户端程序
- 计算机网络课程设计:简单FTP客户端
- c编程练习题目及答案2.zip
- FTP客户端完整版
- 网络编程---ftp客户端程序实验报告
- 基于LAN的即时通信软件,功能:登录
- 简易FTP客户端/服务端系统
- FTP客户端程序
- TFTP客户端 文件上传/实现
- linux-FTP客户端(纯C代码)
- FTP客户端的设计
- FTP客户端服务器端全部代码
- FTP客户端 源代码
- Xftp 6.0.0115 FTP/SFTP客户端绿色版保证安
- 基于qt实现的简单FTP客户端
- linux c编程练习 大富翁网络版
- TFTP客户端服务器程序
- ftp客户端 实例源码下载24903
- 计算机网络课程设计ftp协议客户端和
- 计算机实验 Socket编程 FTP客户端源程序
- FTP客户端程序设计
评论
共有 条评论