好文档 - 专业文书写作范文服务资料分享网站

[互联网]计算机网络课程设计任务书

天下 分享 时间: 加入收藏 我要投稿 点赞

实验四SOCKET编程实现简单FTP程序

1.实验目的

(1)掌握网络应用程序的开发方法;

(2)掌握Client/ Server结构软件的设计与开发方法 (3)掌握Socket机制的工作原理 2.实验准备

(1)阅读关于TCP/IP协议和Socket的相关内容; (2)阅读WinSock编程指南; (3)VC++6.0/DELPHI7.0/C#开发工具 3.实验内容

使用Win32 Socket 函数实现mini FTP client/ Server:在客户端实现GET file, PUT file, CD( change Directory), PWD( display current directory in server)功能。 4.实验报告

(1)按实验内容进行软件编制和调试 (2)进行功能测试,记录测试步骤 (3)给出程序主要部分流程图

数据同步传输系统既适合于服务器端的目录遍历,又适合客户端对服务端的上传文件和下载文件。运用Socket(套接字)接口和使用 FTP(文件传输协议)来实现客户端和服务器端之间信息的交互。该数据传输平台分为两个模块:服务器端模块和客户端模块。客户服务器程序通过对编程语言 Visual C++6.0中的

调用来实现利用TCP/IP协议中的 FTP协议和封装在NMFTP 内的Socket 接口进行客户端与服务器连接,并完成数据同步工作,例如:上传、下载、浏览、查询、对服务器目录与文件的管理以及执行远程命令等。

服务器端程序则持续的监听网络。当接受到客户端的Socket ,服务器程序提供相应的服务。网络通信模块使用POP3 控件来实现客户端与服务器的信息交流。

函数功能和流程如下:(1)首先创建一个CFtpclient的类的实例。

(2)用LogOnToServer()函数登录到指定的FTP服务器,允许非匿名用户和匿名两种登录方式,默认的端口为21.

(3)使用MoveFile()函数来上传下载数据文件,其中第一个参数是本地地址,第二个参数是远程地址,文件传输选用二进制模式。注意,文件传输使用同步模式。

(4)可以使用Ftpcommand()函数来执行FTP指令,包括常用的“CWD/home/mydir”来改变远程服务器上的地址,并处理服务器返回的应答。当这种方式不适用的时候,还可以使用WriteStr()函数和ReadStr()函数向远程服务器发送指令,并自己解释返回的应答。

(5)当所有的文件传输完成之后,使用LogOffServer函数来断开与远程服务器的连接。

(一)FTP客户端的主要代码

1.头文件

#include \#include \#ifdef _DEBUG #undef THIS_FILE

static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif

2.创建ParseLine()函数

BOOL CListItem::ParseLine(CString strLine) {

if(strLine.IsEmpty()) return FALSE;

char ch = strLine.GetAt(0); if(ch == 'd' || ch == 'D'){ m_bDirectory = TRUE; } else

if(ch == '-')

m_bDirectory = FALSE; else{

if(strLine.Find(\

-1)

m_bDirectory = TRUE; else

m_bDirectory = FALSE; if(strLine.GetLength() < 40) return FALSE;

m_strName = strLine.Mid(39); m_strDate = strLine.Left(18); m_strName.TrimLeft(); m_strName.TrimRight(); return TRUE; }

m_bSec = 0;

for(int i = 0; i < 9; i++){ ch = strLine.GetAt(i); if(ch == '-')

m_bSec |= 0x01; m_bSec <<= 1; }

m_strSec = strLine.Mid(1, 9); int ndx = strLine.Find(':'); if(ndx == -1){

if(strLine.GetLength() > 56) ndx = 51; else

return FALSE; }

m_index = ndx;

m_strName = strLine.Mid(ndx + 3); m_strName.TrimLeft(); m_strName.TrimRight();

m_strDate = strLine.Mid(ndx - 9, 12); return TRUE; }

(二)客户端运行后的界面

图2

上面的图是运行后在修改了用户名和密码,查出所需要的文件的I盘和文件名。客户端运行后看到的的服务器端地址是所用电脑的

(三)FTP服务器端代码

1.Socket编程中的Server()函数

UINT ServerThread(LPVOID lpParameter) { SOCKET sListen, sAccept; SOCKADDR_IN inetAddr; DWORD dwFlags; DWORD dwRecvBytes; CServer * server =(CServer*)lpParameter;

2.创建第一个手动重置对象

if ((g_events[0] = WSACreateEvent()) == WSA_INVALID_EVENT) {

printf(\错误:WSACreateEvent failed with error %d\\n\ return 0; }

3. 创建一个线程处理请求

AfxBeginThread(ProcessTreadIO,(LPVOID)server);

if (CreateThread(NULL, 0, ProcessTreadIO,(void*)server, 0, &dwThreadId) == NULL) {

printf(\错误:CreateThread failed with error %d\\n\ return 0; }

g_dwEventTotal = 1; while(!server->m_bStop) {

//处理入站连接

if ((sAccept = accept(sListen, NULL, NULL)) == INVALID_SOCKET) {

printf(\错误:accept failed with error %d\\n\ return 0;

[互联网]计算机网络课程设计任务书

实验四SOCKET编程实现简单FTP程序1.实验目的(1)掌握网络应用程序的开发方法;(2)掌握Client/Server结构软件的设计与开发方法(3)掌握Socket机制的工作原理2.实验准备
推荐度:
点击下载文档文档为doc格式
27fku66z811is530855j3blzb1bwa600hri
领取福利

微信扫码领取福利

微信扫码分享