资源简介
linux系统下C编写的FTP客户端程序,绝对可运行,包含make文件。
支持用户的登录认证,能够隐藏密码;
支持pwd、ls、cd、put、get、quit、mkdir、delete和rename等命令;
支持被动模式;
支持主动模式;

代码片段和文件信息
#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);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1203 2013-05-16 14:01 dir_trans.c
文件 274 2010-09-28 17:13 dir_trans.h
文件 9993 2013-05-16 14:01 file_trans.c
文件 774 2010-09-28 17:13 file_trans.h
文件 18946 2013-05-16 13:56 ftp_client.c
文件 596 2010-09-28 17:13 makefile
文件 2408 2013-05-16 14:01 dir_list.c
文件 1367 2010-09-28 17:13 dir_list.h
----------- --------- ---------- ----- ----
35561 8
- 上一篇:labview十六进制转二进制
- 下一篇:坐标转换包含CGSC2000坐标
相关资源
- FTP课程设计(服务端+客户端)
- 通信软件的具体实例──基于Socket的
- python实现的ftp自动上传、下载脚本
- 编写简单的RMI程序 多线程web 服务器
- 用Socket编程实现FTP
- websocket实现一对一聊天
- IOCP 类 简单的IOCP(IO完成端口)服务
- tftp文件传输工具
- CVI下的TCP服务器和客户端
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- SOCKET 网络编程 计算机网络 作业 客户
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- 基于C 的简易FTP客户端(带源码)
- jar转exe工具 教程,exe能在客户端没有
- socket小工具(可方便建立TCP UDP的soc
- socket客户端源码
- vc 编写的基于TCP协议的客户/服务器
- 61850客户端服务端测试程序
- 基于CSocket的多人聊天室
- 简单服务器端口监听和显示客户端发
- 用IdFTPServer写的一个FTPServer程序
- socket文件传输源码
- Socket自制系统
- FTP命令详解.doc
- HP用SOCKET实现(客户端---服务端)
- 一个简单方便的服务端ftp搭建工具
- 20cn的ftp服务器超好用 简洁
- 最好用的FTP服务器
- Symantec AntiVirus 9.0防病毒客户端部署注
评论
共有 条评论