资源简介
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坐标
相关资源
- WebSocket客户端测试工具:v4.20_免费版
- SEEK68数字图书馆客户端
- 虚拟币交易平台开发解决方案介绍-
- Qt5---编译的FTP库
- 局域网聊天程序基于套接字
- 发送字符到指定的IP和端口
- UDP通信QT
- zw_socket最简单.zip
- 易语言Winsocket模块
- 飞塔fortiexplorer设置软件
- 芒果云客户端v2.9-副本.exe
- 集码客户端.rar
- IC工具客户端(康拓)1551.zip
- 华中科技大学计算机网络实验
- icinga-nrpe-2.14.tar.zip
- 基于QT简单客户端与服务器
- FastDFS的Go客户端fdfs_client.zip
- 基于多线程和SOCKET聊天室V05
- 树莓派控制RGB LED源代码softPwm
- Windows下基于Opencv+Qt的视频聊天客户端
- ARM linux 和上位机windows10进行TCP/IP网络
- socket(网络套接字)传输图片
- 美国_环境保护署(EPA)_测试工况数据
- telnet 源码包含客户端、服务端、登录
- TTL线TFTP刷机教程、修改MAC和编程器固
- 封装的非常完善的socket类,支持服务
- ios 高仿网易新闻客户端
- 老外写的sockethook代码 实现socket钩子
- 实验4-基于socket的简单网络程序设计
- 基于LabVIEW的Socket程序设计
评论
共有 条评论