当前位置:文档之家› 基于Socket的文件传输协议的设计

基于Socket的文件传输协议的设计

程序清单:

服务器:

#include"Winsock.h"

#include"windows.h"

#include"stdio.h"

#pragma comment(lib,"wsock32.lib")

#define RECV_PORT 1024

#define SEND_PORT 1025

#define MAX_FILESIZE 32*1024

SOCKET sock,sockl;

sockaddr_in ServerAddr;

sockaddr_in ClientAddr;

struct Filedata

{ char ffname[30];

char ffdata[MAX_FILESIZE];

int len;}DataPacket;

int Addrlen;

DWORD StartSock()

{ WSADATA WSAData;

if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)

{printf("sock初始化失败!\n");

return(-1);}

return(1);}

DWORD CreateSocket()

{ sock=socket(AF_INET,SOCK_STREAM,0);

if(sock==SOCKET_ERROR)

{ printf("sock创建失败!\n");

WSACleanup();

return(-1);}

ServerAddr.sin_family=AF_INET;

ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);

ServerAddr.sin_port=htons(RECV_PORT);

if(bind(sock,(struct sockaddr FAR*)&ServerAddr, sizeof(ServerAddr))==SOCKET_ERROR)

{ printf("绑定出错");

return(-1);}

return(1);}

DWORD WriteFile(char*fname,char*fdata,int flen) { int i;

FILE *fp;

fp=fopen(fname,"w");

if(fp==NULL)

{printf("不能打开文件\n");}

i=0;

for(i=0;i

{fputc(fdata[i],fp);}

fclose(fp);

return(1);}

DWORD ConnectProcess()

{ Addrlen=sizeof(sockaddr_in);

if(listen(sock,5)<0)

{ printf("监听出错");

return(-1);}

printf("监听...\n");

for(;;)

{sockl=accept(sock,(struct sockaddr FAR*)&ClientAddr,&Addrlen);

for(;;)

{ memset(DataPacket.ffname,0,30);

memset(DataPacket.ffdata,0,MAX_FILESIZE);

DataPacket.len=0;

if(recv(sockl,(char*)&DataPacket,sizeof(DataPacket),0)<=0)

{break;}

printf("已经接收到文件:%s\n",DataPacket.ffname);

printf("文件大小:%d\n",DataPacket.len);

WriteFile(DataPacket.ffname,DataPacket.ffdata,DataPacket.len);

printf("\n");}}}

int main()

{ if(StartSock()==-1)

return(-1);

if(CreateSocket()==-1)

return(-1);

if(ConnectProcess()==-1)

return(-1);

return(1);}

客户机:

#include"Winsock.h"

#include"windows.h"

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#pragma comment(lib,"wsock32.lib")

#define RECV_PORT 1024

#define SEND_PORT 1025

#define MAX_FILESIZE 32*1024

SOCKET sock;

sockaddr_in ServerAddr;

struct Filedata

{ char ffname[30];

char ffdata[MAX_FILESIZE];

int len;

}DataPacket;

DWORD StartSock()

{ WSADATA WSAData;

if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)

{ printf("sock初始化失败!\n");

return(-1);}

ServerAddr.sin_family=AF_INET;

ServerAddr.sin_addr.s_addr=inet_addr("127.0.0.1");

ServerAddr.sin_port=htons(RECV_PORT);

return(1);}

DWORD CreateSocket()

{ sock=socket(AF_INET,SOCK_STREAM,0);

if(sock==SOCKET_ERROR)

{ printf("sock创建失败!\n");

WSACleanup();

return(-1);}

return(1);}

void CallServer()

{ CreateSocket();

while(connect(sock,(struct sockaddr*)&ServerAddr, sizeof(ServerAddr))==SOCKET_ERROR)

{printf("连接...\n");}}

DWORD GetFile(char*fname)

{ FILE*fp;

int Filesize;

int i;

int count,total=0;

char buffer[100];

char Senddata[MAX_FILESIZE];

fp=fopen(fname,"r");

if(fp==NULL)

{ printf("不能打开文件\n");

return(0);}

i=0;

Filesize=0;

memset(Senddata,0,MAX_FILESIZE);

while(!feof(fp))

{count=fread(buffer,sizeof(char),100,fp);

if(ferror(fp))

{printf("读文件出错");

break;}

Filesize+=count;

if(Filesize>MAX_FILESIZE)

{ printf("文件太大\n");

fclose(fp);

return(0);}

memcpy(&Senddata[i],buffer,count);

i+=count;}

fclose(fp);

Senddata[i]='\0';

strcpy(DataPacket.ffname,fname);

memcpy(DataPacket.ffdata,Senddata,Filesize);

DataPacket.len=Filesize;

printf("%s\n",DataPacket.ffname);

printf("%d\n",DataPacket.len);

return(1);}

DWORD TCPSendPacket(struct Filedata Packet)

{ int length;

length=send(sock,(char*)&Packet,sizeof(DataPacket),0);

if(length<=0)

{ printf("发送数据失败!\n");

closesocket(sock);

WSACleanup();

return(-1);}

return(1);}

int main()

{ char sendfilename[30];

StartSock();

CallServer();

printf("连接成功!\n");

while(1)

{ printf("请输入要发送的文件名:\n");

scanf("%s",sendfilename);

if(strcmp(sendfilename,"exit")==0)

break;

if(GetFile(sendfilename)==0)

continue;

TCPSendPacket(DataPacket);}

closesocket(sock);

return(0);}

文件传输协议的(C语言)实现

课程设计:FTP的设计与实现 一、目的 Internet提供了很多类型的网络服务,这些服务实际上都是应用层的服务。FTP服务是基于TCP协议的网络服务。 文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议。通过完成一个文件传送协议FTP的实现,学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP网络应用程序基本的设计方法和实现技巧。 二、内容和要求 每两人一组,分别实现FTP协议客户端程序和服务器程序。 客户端程序具有文件列表、下载文件、上传文件等常用功能。服务器程序支持改变工作目录、文件列表、下载文件等常用的服务。 因为FTP协议比较复杂,为了简单起见,客户端只实现FTP客户端协议的一个子集,总的来说有以下几个功能: ●连接到指定的FTP服务器; ●断开和主机的连接; ●进入子目录; ●退出子目录; ●列出服务器当前目录下的所有文件 ●从服务器下载指定的文件到本地(可以同时指定多个文件连续下载) ●从本地上传指定的文件到服务器 实现以上几个功能时会涉及到下面的几个FTP命令: ●USER username ●PASS password ●CWD directory-name ●PORT host-port ●TYPE A or I ●RETR filename

●STOR filename ●LIST directory 用户界面应该能够为程序输入下面的信息: ●服务器主机名 ●用户名、口令 ●数据的传送类型 ●要进入的服务器目录 ●要下载的远程文件名 ●要上载的本地文件名和远程文件名 同时,界面也为用户输出以下的信息: ●FTP服务器上的文件和目录列表 ●从服务器返回的应答 使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。 对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤: (1)创建Socket; (2)打开连接到Socket的输入/出流; (3)按照一定的协议对Socket进行读/写操作; (4)关闭Socket. 第三步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种程序中基本相同。 /****************client.c****************/ #include #include #include #pragma comment(lib,"ws2_32.lib") #define DEFAULT_PORT 2302 #define DEFAULT_BUFFER 2048 #define DEFAULT_MESSAGE "This is a test of the emergency \ broadcasting system" char szServerip[128], // Server to connect to szMessage[1024]; // Message to send to sever int iPort = DEFAULT_PORT; // Port on server to connect to //DWORD dwCount = DEFAULT_COUNT; // Number of times to send message BOOL bSendOnly = FALSE; // Send data only; don't receive int dirfun();

文件传输协议的简单设计与实现(c语言.

文件传输协议的简单设计与实现(c语言,VC6.0) 使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。 对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤: (1)创建Socket; (2)打开连接到Socket的输入/出流; (3)按照一定的协议对Socket进行读/写操作; (4)关闭Socket. 第三步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种程序中基本相同。 /****************client.c****************/ #include #include #include #pragma comment(lib,"ws2_32.lib") #define DEFAULT_PORT 2302 #define DEFAULT_BUFFER 2048 #define DEFAULT_MESSAGE "This is a test of the emergency \ broadcasting system" char szServerip[128], // Server to connect to szMessage[1024]; // Message to send to sever int iPort = DEFAULT_PORT; // Port on server to connect to //DWORD dwCount = DEFAULT_COUNT; // Number of times to send message BOOL bSendOnly = FALSE; // Send data only; don't receive int dirfun(); int getfun(); int putfun(); int pwdfun(); int cdfun(); int mdfun();

(完整)实验一-文件传输协议设计要点

实验一:文件传输协议的设计与实现

目录 1.实验设计目的和要求 2.背景知识 3.课程设计分析 4.程序清单 5.运行结果 6.总结

1.课程设计目的和要求 文件传输是各种计算机的网络的基本功能,文件传送协议是一种最基本的应用层协议。它是按照客户或服务器模式进行的工作,提供交式的访问。是INTERNRT使用最广泛的协议之一。以及深入了解计算机网络是建立在TCP/IP网络体系结构上。 用 socket 编程接口编写俩个程序,分别为客户程序和服务器程序 1.掌握TCP/IP 网络应用程序基本的设计方法; 2.用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c); 3.撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。 2.背景知识 第一个FTP的RFC由A.K.Bhushan 在1971年提出,同时由MIT 与Harvard实验实现,RFC 172提供了主机间文件传输的一个用户级协议。长期发展过程由于底层协议从NCP改变为TCP,RFC765定义了采用TCP的FCP. FTP协议在今天已经发展成熟,应用也越来越广很多开发的比较成熟的FTP 客户端软件已经得到了广泛的应用. 3.课程设计分析 Server端Client端 创建ServerSocket对象,在某端口提供监听服务Client端 等待来自Client端的服务请求 接受Client端的请求,用返回的创建Socket对象,向Server Socket建立连接的监听端口请求 通过向Socket中读写数据来通过向新的Socket中读写数 与Client端通信据来与Server端通信 关闭Socket,结束与Server端的通信关闭

计算机网络课程设计报告文件传输协议的简单实现

课程设计 课程名称计算机网络课程设计 题目名称文件传输协议的简单设计与实现学生学院 专业班级___ _ 学号 学生姓名______ _________ 指导教师______ _____ 2010 年 1 月 5 日

设计摘要 关键词:SOCKET编程,FTPclient/server程序 摘要:本课程设计包含了文件传输协议的简单设计与实现。 文件传送是各种计算机网络实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP 网络体系结构之上,使用socket 编程接口编写两个程序,分别为客户程序和服务器程序(),实现下述命令功能:get , put, pwd, dir, cd, ?, quit 等,利用了已有网络环境设计并实现简单应用层协议。 本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。

目录 1、文件传输协议的简单设计与实现------------------------------18 1. 1 具体设计任务----------------------------------------------18基本思路及所涉及的相关理论--------------------------------18 1.2.1基本思路-------------------------------------------------18 2.2.2 相关理论--------------------------------------------18 设计流程图------------------------------------------------19 实验运行情况----------------------------------------------19 核心程序--------------------------------------------------22 2.5.1 服务器(sever)程序---------------------------------22 2.5.2 客户(client)程序----------------------------------29 心得体会-----------------------------------------------------------------------------37 参考文献--------------------------------------------------------38

文件传输协议的设计与实现

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:信息工程学院 题目:文件传输协议的设计与实现 初始条件: Windows XP C++,SOCKET 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.掌握TCP/IP 网络应用程序基本的设计方法; 2.用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c); 3.撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。 时间安排: 6月18日查阅资料、方案论证 6月19日方案设计、调试 6月20日撰写课程设计说明书 6月21日答辩 指导教师签名:年月日 系主任(或责任教师)签名:年月日

运行正确的程序:: 1.服务器源代码: #include #include #include using namespace std; #pragma comment(lib, "wsock32.lib") #define PORT 4523 char buf_send[1024]; char buf_rec[1024]; SOCKET sockSrv; //socket初始化 DWORD CreateSocket() { WSADATA WSAData;//WSADATA结构被用来保存函数WSAStartup返回的Windows Sockets初始化信息if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)//WSAStartup完成winsock的初始化 {printf("socket initialize failed!\n"); return (-1); } sockSrv=socket(AF_INET,SOCK_STREAM,0);//定义为面向连接的,返回值送给sockSrv if(sockSrv==SOCKET_ERROR) { printf("socket create failed ! \n"); WSACleanup();//中止Windows Sockets DLL的使用 return(-1); } SOCKADDR_IN addrSrv;//TCP/IP使用SOCKADDR_IN 定义地址 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//计算机IP地址 addrSrv.sin_port=htons(PORT);//协议端口号 addrSrv.sin_family=AF_INET;//地址所属协议簇 //绑定端口 if(bind(sockSrv,(struct sockaddr FAR *)&addrSrv,sizeof(addrSrv))==SOCKET_ERROR) { printf("Bind Error"); return(-1); } return (1); }

文件传输协议的C语言实现

第ChpNum章文件传输协议的C语言实现 1设计目的 本设计旨在利用Winsock 简单实现FTP(File Transfer Protocol,文件传输协议)的客户端和服务器端程序。通过完成此设计,了解Winsock API函数调用方法和一般网络应用程序的编程方法,理解FTP协议,掌握C语言设计FTP协议软件的基本技术,为将来开发其他通信协议软件打下坚实基础。 2 设计准备 (1)连入同一局域网的PC,每人一台。 (2)PC装有Windows操作系统、Visual C++ 编译器及开发手册MSDN 。 3关键技术 文件传输协议介绍 FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。在实现的层面上,FTP又可理解为一个可用于文件传输的客户机/服务器系统,该系统包括客户机端程序和服务器端程序,客户端和服务器端通信规则为FTP协议。用户通过客户机程序向服务器程序发出命令请求,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序接收到这个文件,将其存放在用户目录中。在通信协议的分层模型中,文件传输协议是在TCP(Transmission control Protocol,传输控制协议)之上的一个应用层协议,应用程序之间的通信需要用到传输层提供的字节流透明无误传输服务。Windows操作系统具有TCP/IP协议栈,应用程序可通过Winsock API函数的调用实现端到端透明数据链接的建立。 Winsock API介绍 因特网(Internet)最初是基于Unix的,而Sockets(套接字)是Unix第一个支持TCP/IP 协议栈的网络API,最早于1982年8月随BSD版Unix推出,常被称为Berkeley sockets (伯克利套接字)。Winsock(Windows Sockets API)是从Sockets移植过来的TCP/IP编程

文件传输协议

文件传输协议 从Wikipedia,自由的百科全书 文件传输协议(FTP)是一个标准的网络协议,用来在一个基于TCP的网络从一台主机到另一主机传输文件,如互联网。它经常被用来上传到一个公共的Web 托管服务器的网页和其他文件,由私人发展机。FTP是建立在客户端- 服务器架构,并在客户端和服务器之间使用单独的控制和数据连接。[1]在协议中,FTP 用户可能使用明文自己的身份标志,通常以用户名和密码的形式,但如果服务器被配置为允许匿名也可以连接。为了隐藏(加密)您的用户名和密码,以及加密内容的安全传输,您可以尝试以客户端使用SSH文件传输协议。 第一个FTP客户端应用程序是交互式的命令行工具,执行标准的命令和语法。在今天使用的许多流行的桌面操作系统的图形用户界面的客户,至今已开发包括一般的网页设计方案,如Microsoft Expression Web中,如CuteFTP的专业FTP 客户端。 内容 1协议概述 ?1.1与HTTP的差异 ?1.2通信和数据传输 ?1.3登陆 ?1.4 匿名FTP ?1.5穿越NAT和防火墙 2 FTPmail 3 Web浏览器支持 ?3.1句法 4 安全 4.1 安全的FTP

4.1.1 FTPS 4.1.2 SFTP 4.1.3 通过SSH到达FTP (不从SFTP) ? 5 FTP命令的列表 ? 6 FTP 回应码 ?7 参见 ?8 参考文献 ?9 进一步阅读 ?10 外部链接 协议概述 与HTTP的区别 FTP运行在OSI模型的应用层,用于使用TCP / IP传输文件。要做到这一点,FTP服务器必须正在运行,并等待传入的请求。然后客户端的计算机能够沟通服务器上的端口21。就此,称为控制连接,在会议期间仍然开放。第二个连接,称为数据连接,可以由服务器从20端口打开谈判的客户端端口(主动模式),或从任意端口到客户谈判的服务器端口(被动模式)传输文件数据。控制连接用于会议管理,示例命令,识别和使用像一个telnet协议的客户端和服务器之间交换的密码。例如“RETR命令名”从服务器到客户端传输指定的文件。由于这两个端口结构,FTP被认为是一个彻头彻尾的带协议,而不是如HTTP协议波段。 通信和数据传输 该协议在RFC959中指定,这里总结。 服务器响应超过三位数的状态代码的ASCII控制连接与可选的文本消息。例如“200”(或“200 OK”)意味着最后一个命令是成功的。数字代表的响应代码,而可选的文本代表一个人可读的解释或要求(如Need帐户的)。通过控制连接发送中断消息,可以中止正在进行传输文件数据的数据连接。

ftp文件传输协议课程设计报告大学论文

课程设计 课程名称_计算机网络 题目名称_文件传输协议的简单设计与实现学生学院_自动化学院 专业班级_13级物联网工程1班 学号_3113001554 学生姓名梁建斌 指导教师刘洪涛 2015年12月25日

摘要 文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问。本设计是基于Eclipse平台下使用Java实现的FTP文件传输。实现基本的文件传输操作。建立客户端和服务器、客户端基于TCP Socket进行数据传输,采用多线程进行数据传输,套接字来实现。在实现过程中采用类与对象的思想进行规划,体验了一个软件开发过程的具体实现步骤。 关键字:Java网络编程FTP文件传输文件上传下载文件操作 1

目录 一、实验目的 (3) 二、实验内容和要求 (3) 1、实验内容 (3) 2、具体要求 (3) 三、实验主要仪器设备和材料 (3) 四、基本原理 (3) 1.FTP系统模型 (3) 2. 系统功能设计 (4) 2.1总体设计 (4) 基本功能 (4) 2.2系统实现 (4) 五、实现结构流程图 (5) 六、整体实现的逻辑、数据结构 (5) 1.客户端的抽象数据类型 (5) 1.1FTPClient用户界面 (5) 1.2FTPClient控制连接线程 (7) 1.3FTPClient数据连接线程 (7) 2. 服务器的抽象数据类型 (8) 2.1 FTPServer的控制连接线程 (8) 2.2FTPServer的数据连接线程 (9) 七、具体的一些方法实现 (9) 1. FTPClient用户界面 (10) 2. FTPClient控制连接 (10) 3. FTPClient数据传输 (12) 4. FTPServer控制连接 (14) 5. FTPServer数据传输 (14) 八、测试结果 客户端结果 (16) 服务端结果 (16) 九、课程设计心得 (17) 十、参考文献 (18) 2

简单文件传输协议资料

使用FTP协议实现远程文件的接收和发送 实验目的 Internet应用课程设计是对所学计算机网络及Internet应用等知识全面、系统的总结、巩固和提高的一项课程实践活动。 通过课程设计,一方面提高网络编程解决实际问题的能力,另一方面使学生更深入的理解计算机网络及相关协议的有关知识,为以后的学习和系统开发奠定良好的基础。 熟悉网络编程的方法,TCP/IP体系结构与特点,客户机/服务器模式(Client/Server model),Winsocket编程之套接字,在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。 掌握Telnet、FTP、HTTP、POP3、DNS等协议的工作原理。 实验要求 显示远程目录下所有文件的清单 支持多种格式文件的上传和下载 提供对本地和远程系统的目录操作功能 实验原理 FTP(File Transfer Protocol)是文件传输协议的简称。 FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 FTP工作原理:拿下传文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序:它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP 客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP协议(文件传输协议) 一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。 与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP 协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务

文件传输协议的设计与实现

目录 1.课程设计目的和要求 2.背景知识 3.课程设计分析 4.程序清单 5.运行结果 6.总结 1.课程设计目的和要求 文件传输是各种计算机的网络的基本功能,文件传送协议是一种最基本的应用层协议。它是按照客户或服务器模式进行的工作,提供交式的访问。是INTERNRT使用最广泛的协议之一。以及深入了解计

算机网络是建立在TCP/IP网络体系结构上。 用 socket 编程接口编写俩个程序,分别为客户程序和服务器程序 1.掌握TCP/IP 网络应用程序基本的设计方法; 2.用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c); 3.撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。 2.背景知识 第一个FTP的RFC由A.K.Bhushan 在1971年提出,同时由MIT 与Harvard实验实现,RFC 172提供了主机间文件传输的一个用户级协议。长期发展过程由于底层协议从NCP改变为TCP,RFC765定义了采用TCP的FCP. FTP协议在今天已经发展成熟,应用也越来越广很多开发的比较成熟的FTP 客户端软件已经得到了广泛的应用. 3.课程设计分析 Server端Client端 创建ServerSocket对象,在某端口提供监听服务Client端 等待来自Client端的服务请求 接受Client端的请求,用返回的创建Socket对象,向Server Socket建立连接的监听端口请求 通过向Socket中读写数据来通过向新的Socket中读写数 与Client端通信据来与Server端通信 关闭Socket,结束与Server端的通信关闭Socket,结束与当前 Client的通信,等待其他请求 关闭ServerSocket对象,结束监听服务

FTP文件传输协议

ftp 百科名片 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。 目录 工作原理 用户分类 启动方式 传输细节 FAQ 命令参数 子命令 子命令(提示符下输入) 工作原理 用户分类 启动方式 传输细节 FAQ 命令参数 子命令 子命令(提示符下输入) ?示例

展开 编辑本段工作原理 举例说明 以下载文件为例,当你启动FTP从远程计算机拷贝文件时实际上启动了两个程序:一个本地机上的FTP客户程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装FTP客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。 传输协议 简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP协议。(文件传输协议) 一般来说,用互联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容。Internet上早期实现传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,而连接在Internet上的计算机有上千万台,并且这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows 的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。 服务器系统 与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。 在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

基于Socket的文件传输协议的设计

程序清单: 服务器: #include"Winsock.h" #include"windows.h" #include"stdio.h" #pragma comment(lib,"wsock32.lib") #define RECV_PORT 1024 #define SEND_PORT 1025 #define MAX_FILESIZE 32*1024 SOCKET sock,sockl; sockaddr_in ServerAddr; sockaddr_in ClientAddr; struct Filedata { char ffname[30]; char ffdata[MAX_FILESIZE]; int len;}DataPacket; int Addrlen; DWORD StartSock() { WSADATA WSAData; if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) {printf("sock初始化失败!\n"); return(-1);} return(1);} DWORD CreateSocket() { sock=socket(AF_INET,SOCK_STREAM,0); if(sock==SOCKET_ERROR) { printf("sock创建失败!\n"); WSACleanup(); return(-1);} ServerAddr.sin_family=AF_INET; ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY); ServerAddr.sin_port=htons(RECV_PORT); if(bind(sock,(struct sockaddr FAR*)&ServerAddr, sizeof(ServerAddr))==SOCKET_ERROR) { printf("绑定出错"); return(-1);} return(1);} DWORD WriteFile(char*fname,char*fdata,int flen) { int i; FILE *fp; fp=fopen(fname,"w"); if(fp==NULL) {printf("不能打开文件\n");} i=0;

文件传输协议分析及应用

作者简介:周世杰(1971-),男,四川自贡人,助理工程师,硕士,主要研究方向:中间件技术、OA 技术、电子商务和网络安全. 文章编号:1001-9081(2001)08-0027-02 文件传输协议分析及应用 周世杰,秦志光 (电子科技大学微机所,四川成都610054) 摘 要:分析了各种文件传输协议和传输方式的优缺点,论述了利用HTTP 协议进行文件传输的机制和特点,设计了HTTP 文件传输中的消息格式,分析了HTTP 中文件传输的数据发送和接收过程,提出了利用HTTP 协议进行文件传输的软件设计模型,并给出了具体实现方案。 关键词:HTTP ;协议;文件;文件传输;应用中图分类号:TP311.12 文献标识码:A 1 网络环境下的文件传输协议和方式 在网络环境下,文件传输方式主要有:文件传输协议方式 (FTP )、远程拷贝方式(RCP )、套接字方式(S OCKET )[1~3]。传统方式下,利用FTP 协议进行文件传输最为普遍,这种方式的优点是适用面广、使用简单、不需要用户编制额外的应用软件(一般集成在操作系统或者网络协议中);其缺点是在广域网上传输大文件时可靠性较低、不支持断点续传,因而对大文件和传输精度要求很高的应用不适合。远程拷贝协议是采用大型或中型计算机作文件服务器,将所有文件信息都存放到该服务器上;其他用户作为文件使用者通过网络进行文件传输。RCP 的优点是适合在局域网内进行大文件或者目录的拷贝,但在Internet 上使用时,安全性很难控制[3];利用T CP 或者UDP 提供的套接字直接在服务器和客户机之间进行文件传输的优点是实现过程可以由应用程序开发者直接控制,因而灵活性很高,缺点是编程复杂,可靠性完全依赖于应用程序开发者,这种方式适用于局域网内的消息传递。由此可见,传统的文件传输协议和方式都存在很大的缺点。 随着Web 技术的发展和用户对文件传输可靠性要求的提高,采用传统的方式势必影响文件传输在实际中的应用和推广;同时WWW 技术的广泛应用,也要求新的文件传输协议和方式,使用HTTP 协议进行文件传输就适应了这种需求。 2 HTTP 协议对文件传输的支持 图1 HTTP 协议的请求/响应 HTTP 协议建立在请求/应答模型上[4,5],一个请求的程序(叫作客户)与一个接收程序(叫作服务器)建立连接。HTTP 协议中传输的数据称为实体(Entity ),它可能包含请求和响应资源的特定表示或解释.一个实体由实体首部(Entity -Head )和实体主体(Entity —Body )构成。在请求/响应模型中,客户请求的形式是请求方法、统一资源标示符(URI )和协议版本号,后面紧跟包含请求参数、客户信息,可能还有信息自身的内容等,服务器用一个状态响应(包括它的协议版本号、成功或失 败代码),后面紧跟包含服务器信息、实体信息,可能还有信息的内容等。请求/响应模型的一次完整会话过程如图1所示。 HTTP/1.1及以后的版本的请求型消息(Request Message )中定义了多种请求方法[6],其中GET 、HE AD 、PUT 方法可以用于文件传输。GET 方法用于存取由请求统一资源标示符(Request —URI )指定的任何信息,HE AD 方法除去服务器不会包含在响应中返回任何实体主体之外,功能和GET 方法是一样的,PUT 方法请求将封装的实体放在提供的请求统一资源标示符中,如果请求的URI 指向一个已经存在的资源,则该实体被视为驻留在服务器上的修改版,否则在服务器上创建该资源。GET 和HE AD 方法用于下传文件,PUT 方法用于上传文件。 此外,HTTP 协议的请求首部(Request —Header )中Accept 关键字包含一个范围段(Range ),利用该关键字,客户可以向服务器请求实体中的任何一部分资源;HTTP 协议实体首部C ontent —Length 首部域表示发送给接收方的实体主体(Entity — Body )的大小(以字节为单位),利用C ontent —Length 客户可以 获得将要传输的文件的总长度。如果结合Accept 中的Range 关键字和实体首部C ontent —Length 首部域,客户就可以实现文件传输中的断点续传。利用巴科斯范式(BNF )可以定义HTTP 协议中文件传输的消息格式。由于服务器方的响应消息由Web 服务器定义,下面只给出客户方请求消息的部分 BNF 定义[7]: Request M essage =Head M essage |G et M essage Head M essage =″Head ″SP Request -URI SP Other -in formation ;定义Head 请求消息 G et M essage =″G et ″SP Request -URI SP ;定义接收消息 Request -URI =″HTTP ://″Server -Address ″/″File -Path ″/″File -Name Server -Address =IP address |D omain Name Other -In formation =Version -In formation CR LF H ost -In formation CR LF Accept -In formation CR LF Range -In formation CR LF CR LF ;定义请求的辅助信息Version -In formation =″HTTP/″HTTP Version Number ;HTTP 协议的版本号 H ost -In formation =″HOST:″Server -Address ;定义服务器信息 Accept -In formation =″ACCEPT:″″3/3″;定义接收信息类型 第21卷第8期2001年8月 计算机应用C om puter Applications V ol.21,N o.8Aug.,2001

相关主题