现代计算机网络论文

现代计算机网络论文

信号与信息处理

XXXXX

XXXXX

计算机中实现文件传输过程设计

经过近本学年对计算机网络课程的学习的学习,结合自身所学专业以及现在

所涉及的相关领域知识的需求,我将对计算机网络技术在文件传输方面的技术发

展及应用上做相关的阐述,并实现在计算机中文件传输的一个过程进行设计。

根据所学知识我们了解到了,网络环境中的一项基本应用就是将文件从一台

计算机上复制到另一台可能相距很远的计算机上。可能大家会认为在两个计算机

之间传送文件是一件很简单的事情,其实这往往是很困难的。因为众多的计算机

场上研究出来的文件系统都不尽相同,差别很大。经常会遇到以下问题。

(1)计算机存储数据的格式不同。

(2)文件的目录结构和文件名的规定不同。

(3)对于相同的文件存取功能,操作系统的使用命令不同。

(4)访问控制的方法不同。

随着计算机网络技术的发展与用户需求日益多样化,借助于网络进行信息资

源交流给我们的生活带来了很大的方面便,更重文件传输系统工具都已走进每一

个用户的生活之中。比方说,我们最常用的聊天工具QQ ,UC 浏览器、Internet

发送邮件等互联网上的文件传输。

现在局域网络正处在变革与发展之中。网络中文件传输系统能过让大家在网

络上享受到更多的资源,实现资源的最优化配置。文件传输系统主要功能是自动

获取局域网内用户名的主机名,IP 地址以及工作组名字,最终以C/S模式通过

TCP/IP协议实现点到点文件传输功能。而利用Internet 文件传输协议FTP ,我们

可以得到许多免费软件和大量图文在网络环境下, 利用FTP 协议进行文件传输最

为普遍, 这种方式的优点是适用面广、使用简单、不需要用户编制额外的应用软

件(一般集成在操作系统或者网络协议中); 其缺点是在广域网上传输大文件时可

靠性较低、不支持断点续传, 因而对大文件和传输精度要求很高的应用不适合。

远程拷贝协议是采用大型或中型计算机作文件服务器, 将所有文件信息都存放到

该服务器上; 其他用户作为文件使用者通过网络进行文件传输。利用TCP 或者

UDP 提供的套接字直接在服务器和客户机之间进行文件传输的优点是实现过程

可以由应用程序开发者直接控制, 因而灵活性很高。

下面,我们将对实现文件传输过程进行一个简单的设计与实现。

1 相关技术协议

1.1TCP/IP协议

(1)TCP/IP的网络体系结构

TCP/IP协议采用层次体系结构,如图1.1所示,从图中可以看出,每一层在

逻辑上都与通信端的对应层相连接。图中所示的服务器程序持续监听通信客户

端;客户端仅周期性地与服务器相连接以交换数据,其中TCP 协议层提供相当

于OSI 参考模型中传输层的服务,为收、发端应用程序提供通信;IP 协议层负

责提供统一的数据报;链路层主要功能是收、发IP 层的IP 数据报;TCP/IP之上

是该协议提供的各种服务,而底层网络可以是不同的物理网络,如Ethernet 、Token

Ring 、X.25公共分组交换网等。

图1.1 TCP/IP协议层模型(LAN )

TCP/IP协议族按照层次由上到下,层层包装。最上面的就是应用层了,这

里面有HTTP,FTP 等等我们熟悉的协议。而第二层则是传输层,著名 的TCP 和

UDP 协议就在这个层次(不要告诉我你没用过UDP 玩星际)。第三层是网络层,

IP 协议就在这里,它负责对数据加上IP 地址和其他的数据(后面 会讲到)以确

定传输的目标。第四层是叫数据链路层,这个层次为待传送的数据加入一个以太

网协议头,并进行CRC 编码,为最后的数据传输做准备。再往下则是 硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些我们就不用关心了,我们也不做网卡),所以有些书并不把这个层次放在 TCP/IP协议族里面,因为它几乎和TCP/IP协议的编写者没有任何的关系。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议 从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把TCP/IP协议族称为TCP/IP协议栈。

1.2.FTP 传输协议

FTP 传输协议是文件传输协议(File Transfer Protocol, FTP)是在TCP/IP网络中传输文件的一种格式规范,其规定在用户和服务器之间开设两个通信端口:控制端口和数据端口。前者生存周期为从用户登录开始直至用户登出,后者则在进行数据传送的时候打开,并且在数据传送完毕之后立即结束。控制端口用来监听双方共同规定的控制字以达到及时提供服务或响应,数据端口则要先将文件拆分成分组再进行传送,这样做的目的是为了更加好的适应网络中的带宽限制,以及减少传送期间节点的延时,以达到高速传送的作用。

它为我们提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。在网络发展的早期,用FTP 传输文件约占整个因特网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP 所产生的通信量。

然而文件传输协议FTP 只提供文件传送的一些基本的服务,它使用TCP 可靠的运输服务。FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

在一个FTP 会话通常包括五个软件元素的交互。

1.用户接口 提供了一个用户接口并使用客户端协议解释器的服务 。

2.客户 PI 客户协议解释器,其项远程服务器协议机发送命令并且驱动客户数据传输过程。

3.服务器PI 服务器协议解释器,响应客户协议机发出的命令并驱动服务器端数据传输过程 。

4.客户 DTP 客户数据传输过程,其负责完成和服务器数据传输过程及客户

端本地文件系统的通信。

5.服务DTP 服务器数据传输过程,其负责完成和客户数据传输过程及服务器端文件系统的通信 。

在RFC 959中,一般使用用户这个名词来指代客户。RFC 959定义了客户PI 和服务器PI 交互的方式和规范。用户接口与PI 和DTP 交互的机理都并不是协议标准的一部分。PI 和DTP 往往通常是在同一个程序模块中实现的。

在FTP 会话中,一共会存在有两个独立的网络连接,一个是由两端的PI 使用的,另一个是由两端的DTP 使用的。PI 之间的连接一般被称作控制连接(control connection),DTP 之间的连接被称做数据连接(data connection) 利用印协议可传送两种类型的文件 一种是文本文件, 另一种是二进制文件。将文件传输方式设置为文本文件, 可实现多个长度较大文件的传送将文件传送方式设置为二进制方式,可实现二进制文件, 如可执行文件, 图象, 声音等特殊编码文件需要指出的是电子邮件系统虽然也可以进行文本传输文件,但它只能传输长度比较小的文件。如,以电子邮件方式传送二进制文件,发送和接受方需要进行对应的编码,否则会出现文件的传送错误。

2. 传输系统设计

2.1需求分析:

我们的计算机网络是建立在TCP/IP网络体系结构之上。各种计算机除了安装TCP/IP软件外。还安装了TCP/IP开发系统。实验室各计算机具备了windows 环境中套接字Socket 的编程接口功能。可为用户提供全网范围的进程通信功能。本实验要求利用这些功能,设计和实现一个简单的文件传输协议。

可行性分析:根据实现过程分析。其可行性。当设计程序使客户连接的时候,服务器将会向客户发回一条消息告知它的IP 地址, 请求添加一个用户。然关闭连接并继续接收端口的连接。建立各个命令功能对应的函数, 发送请求,等待服务器的服务。服务器端初始化WinSock. 创建SOCKET ,获取主机信息,并对客户端进行会话,发送回复讯息给客户端。响应完毕后关闭连接,释放WinSock. 从而实现文件传输。

2.2功能分析

实现一个简单的文件的传送,需用Socket 编程接口写两个程序,分别为客户端(Client.cs )和服务端(Server.cs)。客户端程序为文件接收端、服务器端为文件发送端。接收端能将收到的文件保存储到机器上。从而实现文件传输能功。

C/S即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client 端和Server 端来实现,降低了系统的通讯开销。因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。 客户端(Client )或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。

服务器指一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。运行以上软件的计算机或计算机系统也被称为服务器。相对于普通PC 来说,服务器在稳定性、安全性、性能等方面都要求更高,因此CPU 、芯片组、内存、磁盘系统、网络等硬件和普通PC 有所不同。

2.3设计实现过程

2.3.1 通信的模式

由于是实现点对点的文件传输,因此在程序中我们使用的是C/S的模式来实现通信。对于C/S的模式,即分为客户端和服务端。服务端用来接收客户端的连接,实现两端之间互相传输文件。采用C/S的模式可以更好的体现程序的功能设计思想,充分调用在LAN 中的server 和client 两方面的处理能力,极大的减少网络上的信息流通量。C/S体系结构有可能提供一种开放式的、易伸缩扩展的分布式计算机环境,并保护硬件等投资。

2.3.1 传输的可靠性

要想实现文件的可靠性传输,可以使用流式套接字。因为流式套接字提供面向连接的、无差错的、发送顺序一致的、包长度不限和非重复的网络信息的传输,能提供更好的可靠性。而对于数据报套接字提供的是无连接的服务,以独立的数据报进行传输,不保证顺序性、可靠性和无重复性,相比之下用流式套接字能提供更好的的可靠性传输。

2.4 程序设计与实现

2.4.1 程序设计

1. 总体设计

本程序的文件传输系统的实现应包含服务端模块、客户端模块、界面显示模块等几个部分,整个程序采用VC++6.0完成,通信部分采用WINSOCK 。程序使用流式套接字,基于C/S模型。在设计GUI 界面时把客户端和服务端放在一个界面中,根据用户需要将程序设置成客户端和服务端。服务器和客户机的基本流程如图2.1所示。

在通信的时候主要可以分为两个部分,一个部分是控制信息的传输部分,而另一个部分就是文件的传输部分。传送的控制信息可以包含发送文件的请求,文件的名称、大小等,由于这方面的数据量比较小,因此采用了MFC 所提供的CSocket 类的串行化技术来实现。对于文件的传输,由于数据量相对来说比较大,所以用两个线程来实现文件的传输,一个线程用于发送,一个线程用于接收。图

2.1是一个成功的文件传输过程的流程。

图2.1 服务器和客户机的基本流程

2. 模块设计

(1)服务端模块

定义一个服务器端的套接字的类CServerSocket 继承于CSocket 类,创建一个类CServerSocket 的对象,作为程序窗口类CFileTransfersDlg 的成员变量。在服务器端建立一个类CServerSocket 的对象,来监听客户端的连接。由于采用CSocket 类的串行化技术来发送和接收信息,因此创建一个消息类CMessage 继承类CObject 来封装信息。可用函数Serialize(CArchive& ar)来实现串行化技术。最后用析构函数来结束Socket 连接和释放Socket 所占用的资源。

(2)客户端模块

定义一个客户端的套接字的类CClientSocket 继承于CSocket 类,创建一个类CClientSocket 的对象,作为程序窗口类CFileTransfersDlg 的成员变量。在客户器端建立一个类CClientSocket 的对象,来与服务器建立连接。同服务器端一样使用消息类CMessage 封装信息,从而实现消息的接收和发送。可用函数Serialize(CArchive& ar) 来实现串行化技术。最后用析构函数来结束Socket 连接和释放Socket 所占用的资源。

(3)界面显示模块

面向对象程序设计主要是基于用户事件响应的设计方式。而客户端图形界面(GUI )设计的中心问题是用户控制式。现代面向对象程序是事件驱动的,对象响应事件(消息)。对象之间的内部通信由外部用户激活的事件来触发。友好的界面设计包括以下六点方针,包括用户控制式、一致性、个性化和客户化、宽容、反馈。由于客户端程序与服务器程序很类似,所以就把客户端与服务器端打包在一起,通过按钮选择就可以确定本地主机是客户端还是服务器端了,而且这样也方便了文件的互传,只要安装了此软件,你既可以把本地主机当做服务器向远地主机发送文件,又可以把本地主机当做客户机接受从远地主机发来的文件。 3系统关键代码

主要代码如下:

发送端Sendfile.cs

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Net;

using System.Net.Sockets;

namespace Files_transer

{

public class Sendfile

{

public FileInfo fileinfo;

public IPEndPoint receiveIP;//好友的IPEndPoint public int nextindex;//从文件中读取的指针

public FileStream filestr;//文件流

public byte[] sendfilebyte=new byte [1024];//数据缓冲区 public Sendfile(string filename,IPEndPoint ep)

{

fileinfo =new FileInfo(filename);

receiveIP = ep;

nextindex = 0;

}

public int fillbuffer()

{

sendfilebyte = new byte[1024];

if (nextindex == 0)

{

filestr

FileMode.Open);

}

int a=filestr.Read (sendfilebyte ,0 ,1024 );

nextindex =nextindex +a;

return a;

}

public void close()

{

filestr.Close();

sendfilebyte = null;

fileinfo = null;

} = new FileStream(fileinfo.FullName,

}

}

接收端Receivefiles.cs 主要代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.Net ;

using System.Net .Sockets ;

using System.IO;

namespace Files_transer

{

class Receivefiles

{

public string transfername;

public string filesname;

public long filessize;

public IPEndPoint transferep;

public string localname;

public FileStream filestr;

public byte[] receive;

public long nextindex;

public Receivefiles(string transfer,string file,string fs,string

{

transfername = transfer;

filesname = file;

filessize = Convert .ToInt32(fs);

string[] str = ep.Split(':');

IPAddress ip=IPAddress .Parse (str[0]);

int port = Convert.ToInt32(str[1]);

transferep = new IPEndPoint(ip, port); ep)

nextindex = 0;

}

public void clearbuffer()

{

receive =new byte [1024];

}

public void close()

{

filestr.Close();

receive = null;

}

}

}

4. 程序主要的数据结构

发送端Sendfile.cs 主要数据结构:

public FileInfo fileinfo;

public IPEndPoint receiveIP;

public int nextindex;

public FileStream filestr;

public byte[] sendfilebyte=new byte [1024];

接收端Receivefiles.cs 主要数据结构:

public string transfername;

public string filesname;

public long filessize;

public IPEndPoint transferep;

public string localname;

public FileStream filestr;

public byte[] receive;

public long nextindex;

程序调试使用阶段

运行此软件后,首先要在界面上选择的是套接字类型,是服务器还是客户机。在服务器启动后,客户机中输入服务器的IP 地址就可以连接到服务器。当连接成功后,就可以在传送端(服务器/客户机)选择要传输的文件,然后我们就可以在接收端(客户机/服务器)保存此文件。

2.5测试与评价

程序运行结果如下:

1. 程序主界面:获取本机主机名和端口号。

图3

2. 建立连接:输入要连接的IP 地址和端口号。

图4

3. 选择要发送的文件

图5

4. 点发送按钮完成发送

图6

5. 接收方接收文件保存到磁盘上

3. 心得总结

经过本学年对计算机网络课程的学习,使我自己从中学到很多与计算机指示相关的东西,扩展了我的知识面,在课程末,利用所学知识,将计算机网络技术中文间传输部分的知识通过TCP/IP实验的实践,我了解了SOCKET 编程相关的一些知识,了解了客户端各服务器端进行通信的相关算法机制,在建立通信的基础上。我实现了一些简单的功能。限于自己的能力,对SOCKET 编程理解还不够透彻,对网络通信也只局限于TCP/IP Client/Server实验的相关内容,还有待进步的学习各实践以达到对网络通信机制更深一层的理解。我深知自己在这方面的知识还存在很大的欠缺,在今后的学习还需要更进一步的加强,希望能在老师和同学的指导之下能尽快的提高,弥补在这方面的缺失。

现代计算机网络论文

信号与信息处理

XXXXX

XXXXX

计算机中实现文件传输过程设计

经过近本学年对计算机网络课程的学习的学习,结合自身所学专业以及现在

所涉及的相关领域知识的需求,我将对计算机网络技术在文件传输方面的技术发

展及应用上做相关的阐述,并实现在计算机中文件传输的一个过程进行设计。

根据所学知识我们了解到了,网络环境中的一项基本应用就是将文件从一台

计算机上复制到另一台可能相距很远的计算机上。可能大家会认为在两个计算机

之间传送文件是一件很简单的事情,其实这往往是很困难的。因为众多的计算机

场上研究出来的文件系统都不尽相同,差别很大。经常会遇到以下问题。

(1)计算机存储数据的格式不同。

(2)文件的目录结构和文件名的规定不同。

(3)对于相同的文件存取功能,操作系统的使用命令不同。

(4)访问控制的方法不同。

随着计算机网络技术的发展与用户需求日益多样化,借助于网络进行信息资

源交流给我们的生活带来了很大的方面便,更重文件传输系统工具都已走进每一

个用户的生活之中。比方说,我们最常用的聊天工具QQ ,UC 浏览器、Internet

发送邮件等互联网上的文件传输。

现在局域网络正处在变革与发展之中。网络中文件传输系统能过让大家在网

络上享受到更多的资源,实现资源的最优化配置。文件传输系统主要功能是自动

获取局域网内用户名的主机名,IP 地址以及工作组名字,最终以C/S模式通过

TCP/IP协议实现点到点文件传输功能。而利用Internet 文件传输协议FTP ,我们

可以得到许多免费软件和大量图文在网络环境下, 利用FTP 协议进行文件传输最

为普遍, 这种方式的优点是适用面广、使用简单、不需要用户编制额外的应用软

件(一般集成在操作系统或者网络协议中); 其缺点是在广域网上传输大文件时可

靠性较低、不支持断点续传, 因而对大文件和传输精度要求很高的应用不适合。

远程拷贝协议是采用大型或中型计算机作文件服务器, 将所有文件信息都存放到

该服务器上; 其他用户作为文件使用者通过网络进行文件传输。利用TCP 或者

UDP 提供的套接字直接在服务器和客户机之间进行文件传输的优点是实现过程

可以由应用程序开发者直接控制, 因而灵活性很高。

下面,我们将对实现文件传输过程进行一个简单的设计与实现。

1 相关技术协议

1.1TCP/IP协议

(1)TCP/IP的网络体系结构

TCP/IP协议采用层次体系结构,如图1.1所示,从图中可以看出,每一层在

逻辑上都与通信端的对应层相连接。图中所示的服务器程序持续监听通信客户

端;客户端仅周期性地与服务器相连接以交换数据,其中TCP 协议层提供相当

于OSI 参考模型中传输层的服务,为收、发端应用程序提供通信;IP 协议层负

责提供统一的数据报;链路层主要功能是收、发IP 层的IP 数据报;TCP/IP之上

是该协议提供的各种服务,而底层网络可以是不同的物理网络,如Ethernet 、Token

Ring 、X.25公共分组交换网等。

图1.1 TCP/IP协议层模型(LAN )

TCP/IP协议族按照层次由上到下,层层包装。最上面的就是应用层了,这

里面有HTTP,FTP 等等我们熟悉的协议。而第二层则是传输层,著名 的TCP 和

UDP 协议就在这个层次(不要告诉我你没用过UDP 玩星际)。第三层是网络层,

IP 协议就在这里,它负责对数据加上IP 地址和其他的数据(后面 会讲到)以确

定传输的目标。第四层是叫数据链路层,这个层次为待传送的数据加入一个以太

网协议头,并进行CRC 编码,为最后的数据传输做准备。再往下则是 硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些我们就不用关心了,我们也不做网卡),所以有些书并不把这个层次放在 TCP/IP协议族里面,因为它几乎和TCP/IP协议的编写者没有任何的关系。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议 从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把TCP/IP协议族称为TCP/IP协议栈。

1.2.FTP 传输协议

FTP 传输协议是文件传输协议(File Transfer Protocol, FTP)是在TCP/IP网络中传输文件的一种格式规范,其规定在用户和服务器之间开设两个通信端口:控制端口和数据端口。前者生存周期为从用户登录开始直至用户登出,后者则在进行数据传送的时候打开,并且在数据传送完毕之后立即结束。控制端口用来监听双方共同规定的控制字以达到及时提供服务或响应,数据端口则要先将文件拆分成分组再进行传送,这样做的目的是为了更加好的适应网络中的带宽限制,以及减少传送期间节点的延时,以达到高速传送的作用。

它为我们提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。在网络发展的早期,用FTP 传输文件约占整个因特网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP 所产生的通信量。

然而文件传输协议FTP 只提供文件传送的一些基本的服务,它使用TCP 可靠的运输服务。FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

在一个FTP 会话通常包括五个软件元素的交互。

1.用户接口 提供了一个用户接口并使用客户端协议解释器的服务 。

2.客户 PI 客户协议解释器,其项远程服务器协议机发送命令并且驱动客户数据传输过程。

3.服务器PI 服务器协议解释器,响应客户协议机发出的命令并驱动服务器端数据传输过程 。

4.客户 DTP 客户数据传输过程,其负责完成和服务器数据传输过程及客户

端本地文件系统的通信。

5.服务DTP 服务器数据传输过程,其负责完成和客户数据传输过程及服务器端文件系统的通信 。

在RFC 959中,一般使用用户这个名词来指代客户。RFC 959定义了客户PI 和服务器PI 交互的方式和规范。用户接口与PI 和DTP 交互的机理都并不是协议标准的一部分。PI 和DTP 往往通常是在同一个程序模块中实现的。

在FTP 会话中,一共会存在有两个独立的网络连接,一个是由两端的PI 使用的,另一个是由两端的DTP 使用的。PI 之间的连接一般被称作控制连接(control connection),DTP 之间的连接被称做数据连接(data connection) 利用印协议可传送两种类型的文件 一种是文本文件, 另一种是二进制文件。将文件传输方式设置为文本文件, 可实现多个长度较大文件的传送将文件传送方式设置为二进制方式,可实现二进制文件, 如可执行文件, 图象, 声音等特殊编码文件需要指出的是电子邮件系统虽然也可以进行文本传输文件,但它只能传输长度比较小的文件。如,以电子邮件方式传送二进制文件,发送和接受方需要进行对应的编码,否则会出现文件的传送错误。

2. 传输系统设计

2.1需求分析:

我们的计算机网络是建立在TCP/IP网络体系结构之上。各种计算机除了安装TCP/IP软件外。还安装了TCP/IP开发系统。实验室各计算机具备了windows 环境中套接字Socket 的编程接口功能。可为用户提供全网范围的进程通信功能。本实验要求利用这些功能,设计和实现一个简单的文件传输协议。

可行性分析:根据实现过程分析。其可行性。当设计程序使客户连接的时候,服务器将会向客户发回一条消息告知它的IP 地址, 请求添加一个用户。然关闭连接并继续接收端口的连接。建立各个命令功能对应的函数, 发送请求,等待服务器的服务。服务器端初始化WinSock. 创建SOCKET ,获取主机信息,并对客户端进行会话,发送回复讯息给客户端。响应完毕后关闭连接,释放WinSock. 从而实现文件传输。

2.2功能分析

实现一个简单的文件的传送,需用Socket 编程接口写两个程序,分别为客户端(Client.cs )和服务端(Server.cs)。客户端程序为文件接收端、服务器端为文件发送端。接收端能将收到的文件保存储到机器上。从而实现文件传输能功。

C/S即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client 端和Server 端来实现,降低了系统的通讯开销。因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。 客户端(Client )或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。

服务器指一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。运行以上软件的计算机或计算机系统也被称为服务器。相对于普通PC 来说,服务器在稳定性、安全性、性能等方面都要求更高,因此CPU 、芯片组、内存、磁盘系统、网络等硬件和普通PC 有所不同。

2.3设计实现过程

2.3.1 通信的模式

由于是实现点对点的文件传输,因此在程序中我们使用的是C/S的模式来实现通信。对于C/S的模式,即分为客户端和服务端。服务端用来接收客户端的连接,实现两端之间互相传输文件。采用C/S的模式可以更好的体现程序的功能设计思想,充分调用在LAN 中的server 和client 两方面的处理能力,极大的减少网络上的信息流通量。C/S体系结构有可能提供一种开放式的、易伸缩扩展的分布式计算机环境,并保护硬件等投资。

2.3.1 传输的可靠性

要想实现文件的可靠性传输,可以使用流式套接字。因为流式套接字提供面向连接的、无差错的、发送顺序一致的、包长度不限和非重复的网络信息的传输,能提供更好的可靠性。而对于数据报套接字提供的是无连接的服务,以独立的数据报进行传输,不保证顺序性、可靠性和无重复性,相比之下用流式套接字能提供更好的的可靠性传输。

2.4 程序设计与实现

2.4.1 程序设计

1. 总体设计

本程序的文件传输系统的实现应包含服务端模块、客户端模块、界面显示模块等几个部分,整个程序采用VC++6.0完成,通信部分采用WINSOCK 。程序使用流式套接字,基于C/S模型。在设计GUI 界面时把客户端和服务端放在一个界面中,根据用户需要将程序设置成客户端和服务端。服务器和客户机的基本流程如图2.1所示。

在通信的时候主要可以分为两个部分,一个部分是控制信息的传输部分,而另一个部分就是文件的传输部分。传送的控制信息可以包含发送文件的请求,文件的名称、大小等,由于这方面的数据量比较小,因此采用了MFC 所提供的CSocket 类的串行化技术来实现。对于文件的传输,由于数据量相对来说比较大,所以用两个线程来实现文件的传输,一个线程用于发送,一个线程用于接收。图

2.1是一个成功的文件传输过程的流程。

图2.1 服务器和客户机的基本流程

2. 模块设计

(1)服务端模块

定义一个服务器端的套接字的类CServerSocket 继承于CSocket 类,创建一个类CServerSocket 的对象,作为程序窗口类CFileTransfersDlg 的成员变量。在服务器端建立一个类CServerSocket 的对象,来监听客户端的连接。由于采用CSocket 类的串行化技术来发送和接收信息,因此创建一个消息类CMessage 继承类CObject 来封装信息。可用函数Serialize(CArchive& ar)来实现串行化技术。最后用析构函数来结束Socket 连接和释放Socket 所占用的资源。

(2)客户端模块

定义一个客户端的套接字的类CClientSocket 继承于CSocket 类,创建一个类CClientSocket 的对象,作为程序窗口类CFileTransfersDlg 的成员变量。在客户器端建立一个类CClientSocket 的对象,来与服务器建立连接。同服务器端一样使用消息类CMessage 封装信息,从而实现消息的接收和发送。可用函数Serialize(CArchive& ar) 来实现串行化技术。最后用析构函数来结束Socket 连接和释放Socket 所占用的资源。

(3)界面显示模块

面向对象程序设计主要是基于用户事件响应的设计方式。而客户端图形界面(GUI )设计的中心问题是用户控制式。现代面向对象程序是事件驱动的,对象响应事件(消息)。对象之间的内部通信由外部用户激活的事件来触发。友好的界面设计包括以下六点方针,包括用户控制式、一致性、个性化和客户化、宽容、反馈。由于客户端程序与服务器程序很类似,所以就把客户端与服务器端打包在一起,通过按钮选择就可以确定本地主机是客户端还是服务器端了,而且这样也方便了文件的互传,只要安装了此软件,你既可以把本地主机当做服务器向远地主机发送文件,又可以把本地主机当做客户机接受从远地主机发来的文件。 3系统关键代码

主要代码如下:

发送端Sendfile.cs

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Net;

using System.Net.Sockets;

namespace Files_transer

{

public class Sendfile

{

public FileInfo fileinfo;

public IPEndPoint receiveIP;//好友的IPEndPoint public int nextindex;//从文件中读取的指针

public FileStream filestr;//文件流

public byte[] sendfilebyte=new byte [1024];//数据缓冲区 public Sendfile(string filename,IPEndPoint ep)

{

fileinfo =new FileInfo(filename);

receiveIP = ep;

nextindex = 0;

}

public int fillbuffer()

{

sendfilebyte = new byte[1024];

if (nextindex == 0)

{

filestr

FileMode.Open);

}

int a=filestr.Read (sendfilebyte ,0 ,1024 );

nextindex =nextindex +a;

return a;

}

public void close()

{

filestr.Close();

sendfilebyte = null;

fileinfo = null;

} = new FileStream(fileinfo.FullName,

}

}

接收端Receivefiles.cs 主要代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.Net ;

using System.Net .Sockets ;

using System.IO;

namespace Files_transer

{

class Receivefiles

{

public string transfername;

public string filesname;

public long filessize;

public IPEndPoint transferep;

public string localname;

public FileStream filestr;

public byte[] receive;

public long nextindex;

public Receivefiles(string transfer,string file,string fs,string

{

transfername = transfer;

filesname = file;

filessize = Convert .ToInt32(fs);

string[] str = ep.Split(':');

IPAddress ip=IPAddress .Parse (str[0]);

int port = Convert.ToInt32(str[1]);

transferep = new IPEndPoint(ip, port); ep)

nextindex = 0;

}

public void clearbuffer()

{

receive =new byte [1024];

}

public void close()

{

filestr.Close();

receive = null;

}

}

}

4. 程序主要的数据结构

发送端Sendfile.cs 主要数据结构:

public FileInfo fileinfo;

public IPEndPoint receiveIP;

public int nextindex;

public FileStream filestr;

public byte[] sendfilebyte=new byte [1024];

接收端Receivefiles.cs 主要数据结构:

public string transfername;

public string filesname;

public long filessize;

public IPEndPoint transferep;

public string localname;

public FileStream filestr;

public byte[] receive;

public long nextindex;

程序调试使用阶段

运行此软件后,首先要在界面上选择的是套接字类型,是服务器还是客户机。在服务器启动后,客户机中输入服务器的IP 地址就可以连接到服务器。当连接成功后,就可以在传送端(服务器/客户机)选择要传输的文件,然后我们就可以在接收端(客户机/服务器)保存此文件。

2.5测试与评价

程序运行结果如下:

1. 程序主界面:获取本机主机名和端口号。

图3

2. 建立连接:输入要连接的IP 地址和端口号。

图4

3. 选择要发送的文件

图5

4. 点发送按钮完成发送

图6

5. 接收方接收文件保存到磁盘上

3. 心得总结

经过本学年对计算机网络课程的学习,使我自己从中学到很多与计算机指示相关的东西,扩展了我的知识面,在课程末,利用所学知识,将计算机网络技术中文间传输部分的知识通过TCP/IP实验的实践,我了解了SOCKET 编程相关的一些知识,了解了客户端各服务器端进行通信的相关算法机制,在建立通信的基础上。我实现了一些简单的功能。限于自己的能力,对SOCKET 编程理解还不够透彻,对网络通信也只局限于TCP/IP Client/Server实验的相关内容,还有待进步的学习各实践以达到对网络通信机制更深一层的理解。我深知自己在这方面的知识还存在很大的欠缺,在今后的学习还需要更进一步的加强,希望能在老师和同学的指导之下能尽快的提高,弥补在这方面的缺失。


    相关文章

    现代企业财务管理变革趋势分析

    论文题目:现代企业财务管理变革趋势分析 学 生指导教师专 业层 次批 次学 号学习中心工作单位 年 月 独 创 性 声 明 本人声明所呈交的毕业论文(设计)是我个人进行的研究工作及取得的研究成果.尽我所知,除了文中特别加以标注和致谢的地方外 ...

    大学毕业论文范文示例

    人类已经进入21世纪,随着社会的发展,现代科学技术与管理技术的提高,生产信息的多元化.复杂化,信息量越来越大,社会的组织化和生产社会化的程度越来越高,因此,对信息的处理和管理工作也就边的很重要.可以说,现代管理的核心就是决策,而决策的基础, ...

    对中职骨干教师现代教育技术培训的再认识

    对中职骨干教师现代教育技术培训的再认识 李春燕 (湖南农业大学职业教育学院湖南长沙410128) 芝飘溅萋篓娶霎篓勰搿嚣霹藏=三耄戛一蓁摹善茎嚣萎§搋釜曩耋重墨羹蔓瑟三 造就一吴批专业理论水平高.实践 了解基层教师的需求. 教育方法,即从传 ...

    药物筛选新技术与中药现代化研究

    世界科学技术一中药现代化★新思路・新方法 摘要:近年来,随着科学技术的进步,药物筛选技术发生了巨大变化,出现了以快速.微量.大规模为特点,应用多种先进技术手段的高通量药物筛选方法.应用现代科学技术进行中药现代化研究,是促进中药现代化研究的重 ...

    市场营销专业的论文可选题目及相关参考文献

    <市场营销>专业论文选题目录及参考文献 第一部分 <市场营销>专业毕业论文选题实施方案 一.毕业论文目的 毕业论文是专业教育的重要环节,目的是使学生综合运用所学的基础理论.专业知识和技能,培养锻炼分析解决实际问题的能 ...

    工业工程概论课程论文

    工业工程概论课程论文 一.课程论文题目与内容 论文题目一: 现代工业工程的内涵及其在我国制造业的应用前景分析 (一)论文内容(要求不少于5000字) 主要阐述现代工业工程的基本内容,学科特点,同时收集我国目前制造业等面临的问题,阐述现代工业 ...

    行政管理专业毕业论文撰写的有关事项

    一、毕业论文写作程序 1、确定论文选题:可以从已提供的参考选题中选题,也可根据自己的兴趣另外选题。学院根据选题安排老师指导、评分。 2、收集资料:根据选题收集相关文献资料,需要进行调查研究的必须因地制宜搞好调查研究,要尽可能多的积累素材。 ...

    管理科学毕业论文题目(801个)

    毕业论文(设计) 题 目 学 院 学 院 专 业 学生姓名 学 号 年级 级 指导教师 毕业教务处制表 毕业 毕业二〇一五年 三月二十 日 毕业 管理科学毕业论文题目 一.论文说明 本团队长期从事论文写作与论文发表服务,擅长案例分析.编程仿 ...

    思修论文:我看网络语言

    思修论文 论网络语言发展的利与弊 土木1202周石林 2012/12/25 论网络语言发展的利与弊 摘要:浅谈网络语言的发展与起源.了解网络语言的发展为我们的日常生活带来的影响.网络语言的发展带来的利与弊是现下最为热门的话题之一,网络语言为 ...

    基于实例的产品设计知识获取方法及实现

    第14卷第1l期2002年11月 计算机辅助设计与图形学学报 JOURNALOFCOMPUTERAIDEDDESIGN&COMPUTERGRAPHICS V01.14.NO11 NOV..2002 基于实例的产品设计知识获取方法及实 ...