资源简介
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算法
相关资源
- RS编解码的C语言实现
- 数据结构课程设计《活期储蓄帐目管
- c语言端口扫描
- 门禁系统代码(C语言版).
- 实现最近点对问题源的代码(C语言)
- [纯C语言 + Win32 API]一步一步写个围棋
- 共轭梯度法C语言程序
- C语言编写公交查询系统
- AES多种加密解密方式C语言方式实现
- linux ftp服务器
- C语言实现的小球碰撞程序
- MSP430实现温度检测源代码//基于c语言
- Quicksum(C语言)
- C语言程序设计(第三版)谭浩强.zi
- zw_duanzhiying-1870490-C语言库函数.zip
- 车票管理系统C语言版
- c语言实现的单链表和循环链表
- 大数计算器的c语言实现
- c语言科学与艺术实训答案
- c语言程序设计题总结资源
- c语言员工管理系统
- 简易温度测量C语言编程
- 数据结构C语言版源代码
- 简单的线性反馈移位寄存器LFSRC语言实
- zw_RSA算法C语言实现.zip
- 学生成绩管理系统V6.0 c语言大作业
- C语言Renju规则五子棋AI
- funcode 打飞虫c语言源码
- 班费收支管理系统
- c语言tcp服务器端程序代码
评论
共有 条评论