连接文件传输软件设计说明书.doc

文件传输软件  时间:2021-01-12  阅读:()

文件传输软件设计说明书

信息与电气工程学院

(2013—2014学年第二学期)

课程名称:通信软件设计二级项目

文件传输软件题目 :专业班级:通信工程1101学生姓名:刘亚茹王亚男秦绍建施东学号: 110310106 110310107

110310108 110310109指导教师:陈湘国张龙任丹萍设计周数: 1周设计成绩:

2014年07月04日

目录

1课程设计目

的. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2课程设

计正文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2. 1

设计方案. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2.2理论分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 2.2. 1 TCP协

议. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2.2.2

Socket编程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

2.3流程

图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2.4

软件界面设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4

3源程序代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 4软件测

试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 5设

计总结或结论. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

6参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

- 1 -

1课程设计目的

本次课程设计要求我们设计一款文件传输的软件能够方便地实现局域网中主机之间的文件传输。

项目设计为客户机/服务器即当主机主动发起连接或者主动传输文件时该主机为客户机 当处于监听状态被连接时或者被动接收文件时该主机为服务器。

执行一个线程的时候 同步调用必须等待这段代码执行完返回结果后调用方才能继续往下执行并且同步调用又叫阻塞调用他阻塞当前线程然后执行调用 当调用完毕后在继续向下进行。异步调用调用方和被调方可以属于两个不同的线程调用方启动被调方线程后不等对方返回结果就继续执行后续代码可以执行多个线程并且可以避免阻塞所以将在本程序中采用异步调用的方式启动线程。

通过这次课设我们要分析并回答以下问题。

(1)深入理解TCP的工作原理和服务的特性掌握TCP套接字编程机制和方法;

(2)理解C/S架构理解Pull和Push两种文件传输模式;

(3)深入分析文件发送方和接收方的程序运行流程绘制程序流程图; (4)学习使用OpenFileDialog、 SaveFileDialog、 FileStream; (5)完成服务器端软件和客户端软件的开发和测试;

2课程设计正文

文件传输是各种计算机网络实现的基本功能文件传送协议是一种最基本的应用层协议。它是按照客户/服务器的模式进行工作,提供交式的访问。是INTERNET 使用最广泛的协议之一。 以及深入了解计算机网络是建立在TCP/IP网络体系结构之上。本课程设计目的是要学会利用已有网络环境设计并实现简单应用层协议掌握TCP/IP网络应用程序基本设计方法各实现技巧。并要求使用这些功能实现一个简单的文件传送协议。

2. 1设计方案

设计程序使客户端连接的时候服务器将会向客户端发回一条消息告知它的IP 地址然后关闭连接并继续接收端口的连接。当然服务器端先进行监听发送端发送连接请求等待接收端的服务。接收端接受该请求(或是拒绝) 创建socket然后进行发送端与接收端的文件传输 当然也可以进行聊天的功能。文件传输过程中发送放与接收方都可以对其进行控制可随时中断 当文件传输完毕时线程自动停止。

- 2 -

我们为了可靠传送文件我们使用了TCP协议用了C/S架构和P2P架构混合模式。开始侦听建立连接的时候采用的是C/S架构后来进行文件传输和文本发送时应用的是P2P架构。在C/S架构中我们采用Pull方式(客户端主动获取文件服务器端被动地提供文件) 。在P2P架构中在使用TCP方式在对等方之间传递文本消息以及用于发起文件传输的控制信息实际进行文件传输时仍通过TCP连接进行。使用

Server端Listen(监Socket进行Client/Server程序设计的一般连接过程是这样的:

听)某个端口是否有连接请求 Client端向Server端发出Connect(连接)请求 Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。

Server端和Client端都可以通过Send Write等方法与对方通信。对于一个功能齐全的Socket都要包含以下基本结构其工作过程包含创建Socket;打开连接到Socket的输入/出流、按照一定的协议对Socket进行读/写操作、关闭Socket四个基本的步骤。

基本设计思路是先建立TCP连接连接成功后发送文件的一方从文件流读取数据写入网络流接收方读取网络流写入文件流完成后断开TCP连接释放相关的资源。

2.2理论分析

2.2. 1 TCP协议

TCP传输控制协议(Transport Control Protocol) 是一种面向连接的、可靠的传输层协议。

面向连接指其一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成该过程通常被称为“三次握手” 。

可靠性可以通过很多种方法来提供保证在这里我们关心的是数据序列和确认。 TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组而且通过确认保证数据传输的完整性并提供拥塞控制机制 当网络拥塞时源抑制其传输速率。要通过TCP传输数据必须在两端主机之间建立连接。 2.2.2 Socket编程

Socket编程是建立在应用层TCP协议之上的。 目前最流行的是客户机/服务器模式在面向连接的Client/Server模型中 Server端的socket总是等待一个Client端的请求。本次课程设计采用了C/S架构和P2P架构混合模式开始侦听建立连接的时候采用的是客户机/服务器模型其工作流程图如图1。

- 3 -

数据通信服务器启客户程服务器响通信连通信连动监听序请求应请求接建立接关闭

图1 C/S架构工作流程图

2.3流程图

设计程序使客户端连接的时候服务器将会向客户端发回一条消息告知它的IP 地址然后关闭连接并继续接收端口的连接。当然服务器端先进行监听发送端发送连接请求等待接收端的服务。接收端接受该请求(或是拒绝) 创建socket然后进行发送端与接收端的文件传输 当然也可以进行聊天的功能。文件传输过程中发送放与接收方都可以对其进行控制可随时中断 当文件传输完毕时线程自动停止。其

。 发送方与接收方的流程如图2

文件发送方文件接收

方no监听

连接yes no

接受yes

建立连接无法连接

发送文件接收no yes取消

开始传输拒绝取消

传输中断

传输成功

图2文件传输流程图

2.4软件界面设计

本程序的文件传输系统的实现应包含服务端模块、客户端模块、界面显示模块等几个部分整个程序采用C#完成。程序使用流式套接字基于C/S模型。在设计GU I

- 4 -

界面时把客户端和服务端放在一个界面中根据用户需要将程序设置成客户端和服务端。

在通信的时候主要可以分为两个部分一个部分是控制信息的传输部分而另一个部分就是文件的传输部分。传送的控制信息可以包含发送文件的请求文件的名称、大小等。对于文件的传输 由于数据量相对来说比较大所以用两个线程来实现文件的传输一个线程用于发送一个线程用于接收。

此次文件传输软件界面设计如图2-5所示。软件设计大致有三模块组成:首先两台主机IP模块再者则是文件传输区包括文件的选择、接收与发送;最后作为完善增加了聊天区域完善了单纯文件传输功能这一弊端使软件更实用化。

而客户端图形界面(GUI)设计的中心问题是用户控制式。现代面向对象程序是事件驱动的对象响应事件(消息) 。友好的界面设计包括以下六点方针包括用户控制式、一致性、个性化和客户化、宽容、反馈。 由于客户端程序与服务器程序很类似所以客户机与服务器端基本一致先发起连接的则为客户机而且文件的互传也很方便只要安装了此软件你既可以把本地主机当做客户机向远地主机发送文件又可以把本地主机当做服务器接受从远地主机发来的文件。

此界面中用到的控件分别有:label (对方IP、文件正在传输) ; Button(连接、断开连接、监听、选择文件、发送、接收、清空、发送等) ;textbox(输入对方IP 的位置、显示状态的位置、聊天对话框) 。

3程序源代码public Form1 ()

{

InitializeComponent() ;try

{string str = Dns.GetHostName() ; ip = Dns.GetHostAddresses(str) ;localendpoint = new IPEndPoint(ip[0] , 2000) ; //用来传输文本的本地网络端点filelocalendpoint = new IPEndPoint(ip[0] , 4000) ; //传输文件的本地网络端点//实例化2个异步调用callback = new AsyncCallback(startreceivesocket) ;filecallback = new AsyncCallback(startfilereceivesocket) ; /

- 5 -

//实例化文本和文件监听tcplistener = new TcpListener(localendpoint) ;filetcplistener = new TcpListener(filelocalendpoint) ;this. lsb_Information. Items.Add("请选择监听或主动连接\r\n请确保对方处于监r\n否则需要重启这个这个程序\n") ;听状态才可发出连接申请\

}catch (Exception ex)

{

MessageBox.Show(ex.Message) ;

}

}

(1)启动线程并在后台运行在连接的时候打开private void openth0()

{th[0] = new Thread(new ThreadStart(th0process) ) ;th[0] . IsBackground = true;if (th[0] . IsAlive == false)th[0] .Start() ;

}private void openth1 ()

{th[1] = new Thread(new ThreadStart(th1process) ) ;th[1] . IsBackground = true;if (th[1] . IsAlive == false)th[1] .Start() ;

}

(2)听方等待被连接那一方的监听程序private void th0process()

{while (true)

- 6 -

{try

{

if (receivesocket != null)

{receivesocket.Blocking = true;length = receivesocket.Receive(bytesreceived, bytesreceived.Length,

0) ;receivestring =

System.Text.Encoding.GetEncoding("GB2312") .GetString(bytesreceived,0,length) ;this. Invoke(new showmessage(showmessagetotextbox1) , new object[]

{ receivestring } ) ;//这里是另外开的线程直接用赋值语句是不行的//不是主线程所以不能对form上的控件直接进行访问if (receivestring.Length > 9)if (receivestring.Substring(0, 9) == "对方断开了当前连接")

{this. Invoke(new resume(resumefunction) ) ; closefunction() ;

}if (receivestring.Length > 12)if (receivestring.Substring(0, 12) == "对方取消了发送文件的请求"){this. Invoke(new resume(resumefilefunction) ) ; closefilefunction() ;

}if (receivestring == "对方拒绝了您发送文件的请求")

{

星梦云-年中四川100G高防云主机月付仅60元,西南高防月付特价活动,,买到就是赚到!

官方网站:点击访问星梦云活动官网活动方案:机房CPU内存硬盘带宽IP防护流量原价活动价开通方式成都电信优化线路4vCPU4G40G+50G10Mbps1个100G不限流量210元/月 99元/月点击自助购买成都电信优化线路8vCPU8G40G+100G15Mbps1个100G不限流量370元/月 160元/月点击自助购买成都电信优化线路16vCPU16G40G+100G20Mb...

特网云(198元/月),高质量云虚拟主机低至0.16元/天,裸金属服务器仅需10.5元/天

特网云为您提供高速、稳定、安全、弹性的云计算服务计算、存储、监控、安全,完善的云产品满足您的一切所需,深耕云计算领域10余年;我们拥有前沿的核心技术,始终致力于为政府机构、企业组织和个人开发者提供稳定、安全、可靠、高性价比的云计算产品与服务。官方网站:https://www.56dr.com/ 10年老品牌 值得信赖 有需要的请联系======================特网云推出多IP云主机...

10GBIZ(月$2.36 ), 香港和洛杉矶CN2 GIA

10GBIZ服务商经常有看到隔壁的一些博客分享内容,我翻看网站看之前有记录过一篇,只不过由于服务商是2020年新成立的所以分享内容比较谨慎。这不至今已经有将近两年的服务商而且云服务产品也比较丰富,目前有看到10GBIZ服务商有提供香港、美国洛杉矶等多机房的云服务器、独立服务器和站群服务器。其中比较吸引到我们用户的是亚洲节点的包括香港、日本等七星级网络服务。具体我们看看相关的配置和线路产品。第一、香...

文件传输软件为你推荐
中国域名注册中国十大域名注册服务商有哪些?me域名me域名好不好用?免费域名空间求速度快的 免费空间 带域名的 谢谢大家免费网站空间免费网站空间哪个好虚拟主机软件虚拟主机管理软件那个最好用?合肥虚拟主机虚拟主机怎么弄!山东虚拟主机400电话哪家代理商办理得比较好郑州虚拟主机59互联 亿恩科技 和郑州景安那一个公司的虚拟主机最好!我指的是速度和服务!谢谢!请大家凭良心说话!虚拟主机mysql如何连接虚拟主机中的MYSQL长沙虚拟主机长沙点航网络科技有限公司怎么样?
中文域名查询 深圳主机租用 天津服务器租赁 vps租用 ssh帐号 mysql主机 可外链网盘 qq云端 空间首页登陆 中国电信测速器 免费的域名 华为k3 双线空间 测速电信 万网服务器 葫芦机 ncp 月付空间 web服务器 防盗链 更多