|
这是计算机网络课程设计的作品,简单实现了FTP客户端。
用winsock2头文件。算是socket编程的学习实践。
所有代码在vc6.0下调试通过。
/*
*本程序参考rfc959标准。能与遵守此标准的服务器进行信息交互。仅限于windows系统。
*/
#include < stdio.h >
#include < string.h >
#include < stdlib.h >/*system()*/
#include < winsock2.h >
#pragma comment(lib, "ws2_32.lib")
#define ONUM 512
#define MNUM 512
#define FNUM 512
#define ptstruct host {
char ip[20];
unsigned short port;
};
SOCKET ts;
fd_set readfds;
struct timeval timeval;
struct host host;
char renum[4];
char ordertemp[ONUM];
char order[ONUM];
char ordercp[ONUM];
char mess[MNUM];
char file[FNUM];
char setpath[FNUM];
char setpathf[FNUM];
int i, door, r, sys, seti;/*i for;door switch;r receive num;sys system state;set set state*/
char * p;/*strtok*/
int printmess();
void input(char ordertemp[]);
int ftp();
int user();
int pass();
int command();
int list();
SOCKET createDataSocket();
int set();
int retr();
int stor();
int stor()
{
char filename[256];
SOCKET ds;
int wi;
int r2, r3, r4, bsnum, brnum;
FILE * fp = NULL;
set();
memset(filename, '\0', 256);
memset(order, '\0', ONUM);
for (i = 5; i bsnum);
}/*while*/
printf("\n");
switch (printmess())
{
case 425:
case 426:
case 451:
case 551:
case 552:
closesocket(ds);
fclose(fp);
return - 1;
case 250:
case 226:
fclose(fp);
return 0;
default:
return 0;
}
}/*stor*/
int retr()
{
char filename[256];
unsigned long fsize, wfsize;
int r2, wi;
SOCKET ds;
FILE * fp = NULL;
memset(filename, '\0', 256);
memset(order, '\0', ONUM);
for (i = 5; i |
|
|