计算机网络课程设计实验报告(北京科技大学--arp、ftp、ip包)(7)

2019-08-30 17:51

ofstream outPutFile(fileName,ios::out|ios::app); memset(buffer,NULL,4096); int r = recv(socketData,buffer,4096,0); outPutFile.write(buffer,r); if (r < 0) { cout<<\ outPutFile.close(); closesocket(socketData); return 0; } if (r == 0) { break; closesocket(socketData); outPutFile.close(); } } return 1; }

/***************************************** 发送数据从filename中读取数据

*****************************************/ int sendData(char* fileName) { memset(buffer,NULL,4096); ifstream inPutFile(fileName,ios::in|ios::app); inPutFile.read(buffer,sizeof(buffer)); cout<

ftpClient.cpp

#pragma comment(lib,\#include #include #include

31 / 37

#include #include #include #include%using namespace std;

#define MENU \To The FTP Server,Please Input The Command And Enter!Such as: LIST,CWD,RETR,DELE,RMD,MKD\/*

DELE 在服务器上删除指定文件 RMD 在服务器上删除指定目录 MKD 在服务器上创建目录 PASV 获取数据传输端口

TYPE 设置数据交换的类型{A(SCII),E(BCDIC),I(mage),L(ocal byte size)}

被动模式:被动模式是发送被动连接模式命令,服务器由应答码返回可用的ip与端口信息, 通过对应答码的分析找到端口号,用客户端连接正在监听的服务器端口 **/

int main() { char* Direct = new char[256]; memset(Direct,NULL,256); Direct[1] = '/'; int returnNum; char ip[15]; int port; char test; char *userName = new char[50]; memset(userName,NULL,50); memcpy(userName,\ char PWD[50]; char temp[512]; char Command[4]; char Parameter[256]; cout<<\ cin>>ip; cout<<\ cin>>test; if(test=='Y'||test=='y') { cout<<\ cin>>temp; port = (temp[0] - '0')*10+(temp[1] - '0');

32 / 37

memset(temp,NULL,2); }

else if (test=='N'||test=='n') port = 21; else cout<<\

/************************************ 用户登录模块

************************************/ ftpClient* client = new ftpClient(ip,port);

cout<<\cin>>test;

if(test=='Y'||test=='y') { cout<<\ cin>>userName; }

else if (test=='N'||test=='n') cout<<\else cout<<\client->setCommand(\cout<sendCommand();

returnNum = client->receiveCommand(); if(returnNum == 331) { cout<<\ cin>>PWD; client->setCommand(\ client->sendCommand(); returnNum = client->receiveCommand(); if(returnNum == 230) { while(1) { cout<>Command; if(strcmp(Command,\ { /************************************ 连接控制,传输控制,命令传输(需使用 socketData连接的命令,如:LIST)

33 / 37

************************************/ //PASV方式传输 client->setCommand(\ client->sendCommand(); client->receiveCommand(); //分析应答码取端口号 client->getPort();

//设置传输类型初始化数据套接字 client->setCommand(\ client->sendCommand(); client->receiveCommand(); client->interlizeDataSocket(); client->setCommand(\ cout<sendCommand(); client->receiveCommand(); client->receiveList(); client->receiveCommand(); } /************************************ 目录变换 简单的无数据传输方式 ************************************/ else if(strcmp(Command,\ { memset(Direct,NULL,512); cout<<\ cin>>Direct; if(memcmp(Direct,\ { memset(temp,NULL,512); //格式化路径信息Direct memcpy(temp,\ memcpy(temp+strlen(\ memcpy(Direct,temp,strlen(temp)); } client->setCommand(\ client->sendCommand();//发送规范化命令 client->receiveCommand();//接收应答信息并分离应答码 } /************************************ 下载模块 复杂的有数据传输方式:

带有数据传输的文件需要建立数据套接字来传输,

34 / 37

建立数据套接字的方式有两种,主动模式,被动模式。 ************************************/ else if(strcmp(Command,\ { char* filename = new char[512]; memset(filename,NULL,512); //PASV方式传输 client->setCommand(\ client->sendCommand(); client->receiveCommand(); //分析应答码取端口号 client->getPort(); //设置传输类型初始化数据套接字 client->setCommand(\ client->sendCommand(); client->receiveCommand(); client->interlizeDataSocket(); cout<<\ cin>>filename; memset(temp,NULL,512); //格式化路径信息Direct memcpy(temp,Direct,strlen(Direct)); memcpy(temp+strlen(Direct),\ memcpy(temp+strlen(Direct)+strlen(\ /************************************ 格式化命令retr

************************************/ client->setCommand(\ client->sendCommand(); client->receiveCommand(); //接收数据信息和应答信息 client->receiveData(filename); client->receiveCommand(); //清理内存 delete filename; } else if(strcmp(Command,\ { char* filename = new char[512]; memset(filename,NULL,512); /************************************ 上载模块

35 / 37


计算机网络课程设计实验报告(北京科技大学--arp、ftp、ip包)(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:怎样成为一名合格的咨询顾问 - 咨询顾问成功宝典 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: