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

{

2021年恒创科技618活动:香港/美国服务器/云服务器/高防全场3折抢购

2021年恒创科技618活动香港美国服务器/云服务器/高防全场3折抢购,老客户续费送时长,每日限量秒杀。云服务器每款限量抢购,香港美国独服/高防每款限量5台/天,香港节点是CN2线路还不错。福利一:爆品秒杀 超低价秒杀,秒完即止;福利二:云服务器 火爆机型 3折疯抢;福利三:物理服务器 爆款直降 800元/月起;福利四:DDOS防护 超强防御仅 1750元/月。点击进入:2021年恒创科技618活...

PacificRack 端午节再来一款年付$38 VPS主机 2核4GB内存1TB流量

这不端午节和大家一样回家休息几天,也没有照顾网站的更新。今天又出去忙一天没有时间更新,这里简单搜集看看是不是有一些商家促销活动,因为我看到电商平台各种推送活动今天又开始一波,所以说现在的各种促销让人真的很累。比如在前面我们也有看到PacificRack 商家发布过年中活动,这不在端午节(昨天)又发布一款闪购活动,有些朋友姑且较多是端午节活动,刚才有看到活动还在的,如果有需要的朋友可以看看。第一、端...

tmhhost(100元/季)自带windows系统,香港(三网)cn2 gia、日本cn2、韩国cn2、美国(三网)cn2 gia、美国cn2gia200G高防

tmhhost可谓是相当熟悉国内网络情况(资质方面:ISP\ICP\工商齐备),专业售卖海外高端优质线路的云服务器和独立服务器,包括了:香港的三网cn2 gia、日本 cn2、日本软银云服务器、韩国CN2、美国三网cn2 gia 云服务器、美国 cn2 gia +200G高防的。另外还有国内云服务器:镇江BGP 大连BGP数据盘和系统盘分开,自带windows系统,支持支付宝付款和微信,简直就是专...

文件传输软件为你推荐
中文域名注册查询怎么查我们公司的中文域名是被谁注册的?美国服务器托管美国服务器租用时要注意什么?网站空间购买国内网站空间购买哪里的比较实惠啊?深圳网站空间求免费稳定空间网站?免费网站空间申请哪里有永久免费的域名空间可以申请虚拟主机控制面板虚拟主机控制面板是什么?天津虚拟主机天津哪个是新网互联代理呢,我打算购买邮局?东莞虚拟主机哪里的虚拟主机便宜 性价比高?windows虚拟主机在windows上怎么安装虚拟机广西虚拟主机南宁有实力的网络公司推荐下?
主机域名 网通vps 新加坡服务器 idc测评网 台湾谷歌地址 秒杀预告 能外链的相册 万网主机管理 登陆空间 独享主机 帽子云排名 双线空间 空间申请 博客域名 websitepanel 美国代理服务器 linux服务器系统 windowsserver2012 cdn免备案空间 遨游论坛 更多