计网socket编程实验报告
大 学 实 验 报 告实验课程名称: 计算机网络 实验项目名称: Socket 编程 学院: 计算机与软件学院 专业: 计算机科学与技术 报告人: 学号: 班级: 同组人: 指导教师: 实验时间:
全文结束》》-05-10 提交时间:
全文结束》》年5月29日 声明:本次实验内容由报告人和同组人独立完成,所有涉及到他人的工作均已说明。报告人和同组人均同意教师及学校为教学活动而引用本实验的内容,且无需事先征得同意和特别说明。教务处制
1、实验目的 了解FTP协议的工作原理,掌握基于socket的网络编程的基本原理。
2、 实验要求用 Socket (WinSock)编程,实现简单的 FTP 客户端:客户端和 FTP 服务器建立 Socket 连接。
向服务器发送 USER、PASS 命令登录 FTP 服务器。
第 1 页 共 1 页
使用 PORT(或PASV) 建立数据连接。 使用 NLST 进行文件列表。
使用 RETR / STOR 命令下载/上传文件。
在下载完毕后断开数据连接并发送 QUIT 命令退出。服务器:Apache Friends 中的 FileZillaFTP,或是lab:lab @ ftp、case、szu、edu、cn在整个交互的过程中,控制连接始终处于连接的状态。数据连接在每传输一个文件时先打开,传输后关闭
3、 实验分析设计(1)服务端启动,等待用户连接(2)客户端启动,请求与服务端连接(3)服务端应答,与用户建立连接(4)用户输入目录操作、文件上传下载等指令,服务端接收到指令后进行解析,作出相应的响应(5)重复(4)的过程,直至用户输入quit指令要求离开,服务结束
4、 核心代码说明#pragma
ment(lib,\、
h>#include
LIST,CWD,RETR,STOR,DELE,RMD,MKD\定义了在ftp服务器上能进行的操作int main(){char
Dir[256];memset(Dir,NULL,256);int returnNum;char ip[16];int port;char test;char
第 1 页 共 1 页
userName[50];memset(userName,NULL,50);strncpy(userName,\nonymous\temp[512];char mand[4];//char
Parameter[256];cout<<\server::\port,Now the port is21 :[Y/N]\使用命令端口21来连接到ftp服务器,在ftp协议下不用更改
cin>>test;if(test=='Y'||test=='y')//连接到ftp服务器{cout<<\port::\
'0')*10+(temp[2]>setmand(\验证登录名cout<
==331){cout<<\输入密码client->setmand(\client->receivemand(); //从ftp服务器接收响应码,正确时应返回230if(returnNum ==230)
//用户已经正确登录到了ftp服务器
{while(1){cout<