资源简介
我自己的毕业设计作品,比较初级的东西,但是实现了上下传文件,目录管理相关的一些操作.仅供新手参考.实现的命令有USER PASS QUIT PASV TYPE PWD CWD LIST RETR STOR
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define FTP_DEFAULT_PORT 21
#define SUCCESS 0
#define MAX_STR_LEN 64
#define MAX_BUF_LEN 4096
#define MAX_FILE_NAME 255
/* Global Variables */
struct sockaddr_in Ftp_Server_ctrl_addr; /*server‘s address for ctrl connection*/
struct sockaddr_in Ftp_Server_data_addr; /*server‘s address for data connection*/
int sockfd_ctrl; /* socket for control connection */
int sockfd_data; /* socket for data connection */
char ServerIP[MAX_STR_LEN]; /* Server‘s ip */
int ServerPort; /* Server‘s port */
char User[MAX_STR_LEN]; /* user‘s account for logining*/
char Password[MAX_STR_LEN]; /* user‘s password for logining*/
char MsgBuffer[MAX_BUF_LEN];
char DataBuffer[MAX_BUF_LEN];
static struct termios stored_settings;
/* print error imformation and exit program */
int ErrorExit(const char* error)
{
printf(“Error: %s\n“error);
exit(-1);
}
/*
void echo_off(void)
{
struct termios new_settings;
tcgetattr(0&stored_settings);
new_settings = stored_settings;
new_settings.c_lflag &= (~ECHO);
tcsetattr(0TCSANOW&new_settings);
return;
}
void echo_on(void)
{
tcsetattr(0TCSANOW&stored_settings);
return;
}
*/
/*********************************************send and receive message************************************************/
/* send control command to server with specified socket descriptor
* COMMAND or COMMAND
* example: “USER anonymous\r\n“ or “PWD\r\n“
*/
int SendControlCommand(const char* cmd_code const char* cmd_para)// test ok by myself
{
char SendBuffer[MAX_BUF_LEN];
int Length;
int SendRes;
memset(SendBuffer 0 MAX_BUF_LEN);
if(cmd_code)
{
strcpy(SendBuffercmd_code);
if(cmd_para)
{
strcat(SendBuffer“ “);
strcat(SendBuffercmd_para);
strcat(SendBuffer“\r\n“);
}
else
strcat(SendBuffer“\r\n“);
Length=strlen(SendBuffer);
SendRes = write(sockfd_ctrlSendBufferLength);
}
return SendRes;
}
/* get reply message from server */ //test ok
int GetReplyMsg(void)
{
int count;
int reply;
memset(MsgBuffer 0 MAX_BUF_LEN);
count = read(sockfd_ctrlMsgBufferMAX_BUF_LEN);
reply = atoi(MsgBuffer);
printf(“[Server reply] %s“ MsgBuffer);
return reply;
}
/*************************************** login************************************/
/* get user‘s account from stdin */
void GetUserAccount(void) //test ok
{
char buf[MAX_BUF_LEN];
printf(“User:(Press Enter for anonymous):“);
fgets(bufsizeof(buf)stdin);
if(buf[0]==‘\n‘)
strncpy(User“anonymous“9);
else
strncpy(Userbufstrlen(buf)-1);
// printf(“User:%s\n“User);
}
/* get user‘s password from stdin*/
void GetUserPasswd(void)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 17499 2011-05-19 19:01 client
文件 13655 2011-05-19 23:14 client.c
- 上一篇:树莓派小车循迹程序
- 下一篇:运动会分数统计程序设计报告
相关资源
- VC6.0 网络程序设计 UDP 文件传输 客户
- 《嵌入式Linux C语言应用程序设计》读
- 基于多线程的Linux聊天室系统
- myshell:操作系统编程-自己用C语言写
- linux下C语言编写的学生信息管理系统
- ftp的C++源码实现,可以进行文件传输
- vc++FTP搜索工具()
- SMTP客户端程序(mfc实现)
- linux C语言 QQ模拟聊天.zip
- 基于linux下的C语言员工管理系统
- c++实现的sql基本功能 Linux,win下可运
- Linux环境下——C语言聊天室项目
- 实验五常用开发工具
- 《基于Linux的设备分配及磁盘调度》
- IPMSG飞鸽传书源代码,linux-c语言,有
- Linux下c语言实现对文本内容的三种输
- Linux c语言多线程实现生产者/消费者问
- C++实现的FTP服务器
- Linux下硬盘分区读写程序
- VC++局域网屏幕监控(客户端和服务器
- linux ext2 文件系统模拟 c语言实现
- 操作系统文件管理系统c++
- RTSP请求客户端
- 操作系统课程设计 linux文件系统
- linux环境下的QQ聊天系统
- linux局域网聊天软件server+client 源码
- MFC程序开发之聊天室客户端+服务器源
- linuxc语言信号量爸爸女儿儿子橘子苹
- 一个FTP客户端的设计与实现C实现
- unix 下实现ftp部分功能lsgetput等等
评论
共有 条评论