连接文件传输软件设计说明书.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 == "对方拒绝了您发送文件的请求")

{

快云科技:香港沙田CN2云服务器低至29元/月起;美国高防弹性云/洛杉矶CUVIP低至33.6元/月起

快云科技怎么样?快云科技是一家成立于2020年的新起国内主机商,资质齐全 持有IDC ICP ISP等正规商家。云服务器网(yuntue.com)小编之前已经介绍过很多快云科技的香港及美国云服务器了,这次再介绍一下新的优惠方案。目前,香港云沙田CN2云服务器低至29元/月起;美国超防弹性云/洛杉矶CUVIP低至33.6元/月起。快云科技的云主机架构采用KVM虚拟化技术,全盘SSD硬盘,RAID10...

CloudCone中国春节优惠活动限定指定注册时间年付VPS主机$13.5

CloudCone 商家产品还是比较有特点的,支持随时的删除机器按时间计费模式,类似什么熟悉的Vultr、Linode、DO等服务商,但是也有不足之处就在于机房太少。商家的活动也是经常有的,比如这次中国春节期间商家也是有提供活动,比如有限定指定时间段之前注册的用户可以享受年付优惠VPS主机,比如年付13.5美元。1、CloudCone新年礼物限定款仅限2019年注册优惠购买,活动开始时间:1月31...

火数云 55元/月BGP限时三折,独立服务器及站群限时8折,新乡、安徽、香港、美国

火数云怎么样?火数云主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、专属服务器托管、带宽租用等产品和服务。火数云提供洛阳、新乡、安徽、香港、美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经...

文件传输软件为你推荐
免费美国主机谁有免费空间?给我提供一个,主机屋的就不要了,美国主机也行,但是必须得稳定,谢谢注册国际域名怎么申请国际域名虚拟主机代理哪家虚拟主机商的代理比较好网站服务器租用公司想建个网站,请问租服务器按年收费是多少钱免费vps服务器请推荐一个免费的云服务器?虚拟主机申请现在做网站申请虚拟主机选择哪种合适?台湾vps台湾服务器租用托管那里好免费网站空间免费网站空间哪个好网站空间购买国内网站空间购买哪里的比较实惠啊?香港虚拟主机香港的虚拟主机好不好,如何选择虚拟主机?
个人注册域名 域名备案号查询 万网域名解析 香港ufo 华为云服务 国内免备案主机 westhost 42u标准机柜尺寸 12306抢票助手 申请空间 论坛空间 91vps nerds cdn加速原理 tna官网 爱奇艺vip免费试用7天 in域名 申请免费空间和域名 免费的域名 supercache 更多