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

{

美得云(15元/月)美国cera 2核4G 15元/月 香港1核 1G 3M独享

美得云怎么样?美得云好不好?美得云是第一次来推广软文,老板人脾气特别好,能感觉出来会用心对待用户。美得云这次为大家提供了几款性价比十分高的产品,美国cera 2核4G 15元/月 香港1核 1G 3M独享 15元/月,并且还提供了免费空间给大家使用。嘻嘻 我也打算去白嫖一个空间了。新用户注册福利-8折优惠码:H2dmBKbF 截止2021.10.1结束。KVM架构,99.99%高可用性,依托BGP...

日本CN2独立物理服务器 E3 1230 16G 20M 500元/月 提速啦

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

新版本Apache HTTP Server 2.4.51发布更新(有安全漏洞建议升级)

今天中午的时候看到群里网友在讨论新版本的Apache HTTP Server 2.4.51发布且建议更新升级,如果有服务器在使用较早版本的话可能需要升级安全,这次的版本中涉及到安全漏洞的问题。Apache HTTP 中2.4.50的修复补丁CVE-2021-41773 修复不完整,导致新的漏洞CVE-2021-42013。攻击者可以使用由类似别名的指令配置将URL映射到目录外的文件的遍历攻击。这里...

文件传输软件为你推荐
美国免费主机美国免费主机是什么操作系统啊租服务器开个小型公司,租个服务器需要多少钱?免费国内空间谁知道国内哪个免费空间好,要1GB的免费国内空间中国有什么免费的空间国内ip代理求一些国内《ip代理》地址大全北京网站空间求永久免费的网站服务器!手机网站空间QQ空间技巧的手机网站啊?100m虚拟主机100M虚拟主机有多大,能放多少东西淘宝虚拟主机淘宝买万网虚拟主机怎么变别真假深圳虚拟主机深圳市虚拟主机深圳双线虚拟主机深圳主机合租深圳合租主机空推荐有哪?
域名查询软件 域名主机管理系统 sharktech 香港机房 pw域名 免费主机 163网 香港托管 godaddy优惠券 tightvnc 大容量存储 dd444 免空 域名和空间 服务器托管什么意思 免费高速空间 乐视会员免费领取 数据湾 亿库 hosting24 更多