计算机网络基础-浙江大学实验报告
本科实验报告课程名称: 计算机网络基础姓 名: 赖剑学 院: 软件学院系: 软件工程专 业: 软件工程学 号: 3052211006指导教师: 陆魁军 陈辉年 月 日浙江大学实验报告课程名称: 计算机网络基础 实验类型: 普通实验 实验项目名称: 熟悉网络命令及用 SOCKET 编程实现 mini FTP client / Server 学生姓名: 赖剑 专业: 软件工程 学号: 3052211006 同组学生姓名: 刘世林 徐晓龙 邬雪松 指导老师: 陆魁军 陈辉 实验地点: 曹西软件学院机房 实验日期: 07 年 9 月 11 日开始一、 实验目的和要求:在 PC 机上熟悉常用网络命令;熟悉掌握 windows 下的 Socket 编程,并应用 Socket API实现 mini FTP client/ Server。二、 实验内容和原理在 PC 机上熟悉常用网络命令: Ping.,Netstat., Telnet., Tracert., Winipcfg.,Arp., Ftp., Ipconfig., Net., Route.,选择 5 个或 5 个以上的命令书写实验报告。使用 Win32 Socket 函数实现,不能使用 MFC 的 Csocket 类库(MFC 的 Csocket 类库不能在 LINUX、UNIX 等环境下使用,跨平台性差) ,不能用 C++ builder 开发(编程量太少,C++ builder 已完成了很多 SOCKET 代码的编写) 。1. mini FTP client/ Server 要求:在客户端至少实现 GET file, PUT file, CD( change Directory), PWD( display current directory in server)功能。独立完成 mini FTP client端及 Server 端程序。 mini FTP client/ Server 不一定要使用标准 FTP 协议,不一定要与现有的标准 FTP server 互通,也不一定要与现有的标准 FTP Client(例如LEAP FTP)互通。 mini FTP client/ Server 可使用自定义的 FTP 协议、应用层PDU 格式及握手方式。2. 补充:有能力的同学在完成任务后,可以进一步开发 client 端软件,尝试与现有的标准 FTP server 互通, 实现 GET file, PUT file, CD( change Directory), PWD( display current directory in server)等功能。有能力的同学在完成任务后,可以进一步在自己机器上的 linux / unix 平台下实现 mini FTP client/ Server 或聊天程序。三、 主要仪器设备联网的 PC 机。四、 操作方法与实验步骤 在命令行方式下,执行适当的命令,完成以下功能:1. 测试到特定地址的联通性、数据包延迟时间2. 显示本机的默认网关地址、DNS 服务器地址3. 显示本机记录的局域网内其它机器 IP 地址与其物理地址的对照表4. 显示已经与本机建立 TCP 连接的端口、IP 地址、连接状态等信息5. 使用 telnet 连接 WEB 服务器的端口, 客户端 ftpclient.cpp 和 ftpclient.h 在 vc6.0 环境进行编译。服务器端 FtpServer.cpp 和 FtpServer.h 在 vs2005 环境中进行编译。在使用服务器端之前先修改配置文件 FtpServer.ini。方法为“使用服务器前请先配置 FtpServer.ini 文件ServerIp 表示服务器 ipServerPort 表示服务器端口RootDirectory 表示服务器共享根目录 ,缺省为当前目录“修改配置文件之后服务器端可直接编译运行客户端需按要求输入服务器 ip 和端口五、 实验数据记录和处理网络命令1. 测试到特定地址的联通性、数据包延迟时间输入命令 ping 222.205.42.235,得到与该地址的连通性及延迟。2. 显示本机的网卡物理地址、IP 地址,默认网关地址、DNS 服务器地址输入命令 ipconfig /all 得到当前连接的详细信息3.显示本机记录的局域网内其它机器 IP 地址与其物理地址的对照表输入命令 arp -a 显示本机记录的 IP 及其对应物理地址4.显示已经与本机建立 TCP 连接的端口、IP 地址、连接状态等信息输入命令 netstat -a -n -p TCP,用数字模式显示于本机建立的 TCP 连接及其状态5.使用 telnet 连接 WEB 服务器的端口连接飘渺水云间,输入 telnet 10.13.21.88Mini-FTP 程序框图WSAStartupsocketconnectsendrecvclosesocketWSACleanupWSAStartupsocketbindlistenacceptrecvsendrecvWSACleanupconnection establishmentdata (request)data (reply)closesocketEnd of operationC l i e n t S e r v e r依据上图将 client 和 server 进行连接和数据传输。 主要过程介绍服务器:开始从配置文件 FtpServer.ini 读取相关信息,创建一个套接口,将一本地地址与一套接口捆绑并监听申请的连接。当有客户端进行连接时接受并返回指令帮助和当前目录的文件列表。然后等待用户指令。收到指令后作出相应回应。客户端:从屏幕上读取信息,创建一个套接口,与服务器相连接。把服务器端发来的信息打印出来。向服务器发送命令,对相应命令处理从服务器接受的信。 源程序服务器:FtpServer.h———————————————————————————————————————#pragma comment(lib,“ws2_32.lib“)#include #include #include #include #include #include #define BUFSIZE 1024using namespace std;typedef struct acceptInf{SOCKET acceptSocket;//store the client s socketstruct sockaddr_in *acceptAddr;//store the client s address}accepInf;typedef struct transferInf{SOCKET acceptSocket;//store the client s socketHANDLE hFile;//store the transferred file s handleint type;// 0 for download, 1 for u