资源简介
unix 下实现ftp部分功能ls,get,put,cd,pwd等等功能
C语言代码
代码片段和文件信息
/* header files */
#include
#include
#include /* getservbyname() gethostbyname() */
#include /* for definition of errno */
#include
#include
#include
#include
#include
/* define macros*/
#define MAXBUF 1024
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
/* define FTP reply code */
#define USERNAME 220
#define PASSWORD 331
#define LOGIN 230
#define PATHNAME 257
#define CLOSEDATA 226
#define ACTIONOK 250
#define FAIL 550
/* DefinE global variables */
char *host; /* hostname or dotted-decimal string */
char *port;
char *rbuf *rbuf1; /* pointer that is malloc‘ed */
char *wbuf *wbuf1; /* pointer that is malloc‘ed */
struct sockaddr_in servaddr;
char *rbuf2 *rbuf3;
int cliopen(char *host char *port);
void strtosrv(char * char * char *);
void cmd_tcp(int sockfd);
void ftp_list(int sockfd);
void ftp_get(int sck char *pDownloadFileName_s);
void ftp_put (int sck char *pUploadFileName_s);
void ftp_help();
int
main(int argc char *argv[])
{
int fd;
struct hostent *h;
if (0 != argc-2)
{
printf(“%s\n““missing “);
exit(0);
}
host = argv[1];
port = “21“;
//code here: Allocate the read and write buffers before open().
rbuf = (char *)malloc(MAXBUF);
rbuf1 = (char *)malloc(MAXBUF);
wbuf = (char *)malloc(MAXBUF);
wbuf1 = (char *)malloc(MAXBUF);
rbuf2 = (char *)malloc(MAXBUF);
rbuf3 = (char *)malloc(MAXBUF);
fd = cliopen(host port);
cmd_tcp(fd);
exit(0);
}
/* Establish a TCP connection from client to server */
int
cliopen(char *host char *port)
{
int sd rc i;
struct hostent *h;
short port_int = atoi(port);
h = gethostbyname(host);
servaddr.sin_family = AF_INET;
memcpy((char *) &servaddr.sin_addr.s_addr h->h_addr_list[0] h->h_length);
servaddr.sin_port = htons(port_int);
//printf(“Connecting %s:%d.......“ inet_ntoa(servaddr.sin_addr) port_int);
/* create socket */
sd = socket(AF_INET SOCK_STREAM 0);
if(sd<0) {
perror(“cannot open socket “);
exit(1);
}
/* connect to server */
rc = connect(sd (struct sockaddr *) &servaddr sizeof(servaddr));
if(rc<0) {
perror(“Cannot connect “);
exit(1);
}
return sd;
}
/*
Compute server‘s port by a pair of integers and store it in char *port
Get server‘s IP address and store it in char *host
*/
void
strtosrv(char *str char *host char *port)
{
int i;
char *p;
char *ip;
char *portNum;
p = (char *)malloc(300);
sprintf(p“%s“strchr(str‘(‘));
ip=++p;
for(i=0;i<4;i++)
{
p=strchr(ip‘‘);
*p=‘.‘;
}
*p=‘\0‘;
sprintf(host“%s“ip);
portNum = ++p;
p = strchr(portNum‘‘);
i = atoi(portNum) * 256 + atoi(++p);
sprintf(portNum“%d“i);
sprintf(port“%s“portNum);
- 上一篇:MFC 界面编程13个
- 下一篇:NUFFT的matlab算法
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论