当前位置:文档之家› tcp文件传输软件设计

tcp文件传输软件设计

tcp文件传输软件设计
tcp文件传输软件设计

文件传输软件的设计

1、设计分析

1.1 TCP的工作原理和服务的特性

TCP是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务。

TCP协议最主要的特点是:1) 是一种基于连接的协议。 2) 保证数据准确到达。3) 保证各数据到达的顺序与数据发出的顺序相同。 4) 传输的数据无消息边界。

1.1.1 TCP协议通讯工作原理(TCP三次握手)

传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,过程如下所示:

TCP三次握手

在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。

1.1.2 TCP的特性

TCP有以下特性:

面向数据流的处理方式:TCP采用连续方式对数据进行处理,即TCP能够以每次接收一个

字节的方式来接收数据,而不是按预先格式化的数据块的方式来接收。TCP将数据格式化成可变长的数据流,然后传送给网际层。

完全的可靠性:TCP通过面向连接的传输方式,以及一些差错控制、流量控制的手段,确保了数据不会丢失;同时TCP还能对接收到的IP数据报进行重新排序,解决了数据乱序的问题。所有的这些,都保证了TCP传输的完全可靠性。

全双工通信:TCP连接允许数据在任何一个方向流动,并允许任何一个应用程序在任何时刻发送数据。TCP能够在两个方向上缓冲输入和输出的数据,这使得一个应用在发送数据以后,可以在数据传输的同时,进行别的工作。

流量控制:TCP的流量控制特性确保数据传输的速度不会超过或低于目的计算机接收数据的能力。

基于TCP的应用层协议有很多,其中有:文件传输协议FTP、远程登录协议Telnet和简单邮件传输协议SMTP等。

1.2 TCP套接字编程机制和方法

1.2.1 TCP套接字编程机制

根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

TCP套接字编程方法:使用套接字发送和接收数据:服务器与客户端双方建立连接后,程序中需要先将要发送的数据转换为字节数组,然后使用Socket对象的Send方法发送数据,或者使用Receive方法接收数据。

socket编程方法:

1.3 C/S架构,Pull和Push两种文件传输模式

1.3. 1 C/S架构

(Client/Server或客户/服务器模式):Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。

传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。

C/S工作模式:C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。

1.3.2 Pull和Push两种文件传输模式

推送(PUSH)技术是一种建立在客户服务器上的机制,就是由服务器主动将信息发往

客户端的技术。同传统的拉(PULL)技术相比,最主要的区别在于推送(PUSH)技术是由服务器主动向客户机发送信息,而拉(PULL)技术则是由客户机主动请求信息。PUSH技术的优势在于信息的主动性和及时性。

2.程序设计

2.1 采用面向对象设计的设计方法,用C#编程语言,开发环境为Windows XP,编程工具为Visual Studio 2008.

3.软件测试

3.1 文件传输测试

3.1.1 在处于同意局域网中的两台电脑上运行程序,运行后的软件如图:

软件图标和运行

3.2.2 其中一台电脑作为主机,另一台作为客户机。在客户机端单击监听,即可以监听局域网中其它机器并等待主机发出的连接尝试了。显示“已经开始监听”。在主机上输入IP,单击连接按钮,显示“你发起了一个连接请求”,如对方选择‘接受’则连接已建立,如对方选择‘拒绝’则显示“对方拒绝了你的传文件请求”。

在客户机端接受连接请求后,主机端可点击选择文件按钮,选择文件后点击发送,等待对方接收。客户机端接收后,提示传输的文件放在哪里,选择后确定。在传文件区会出现进度条.

3.2.4 连接建立后,可在聊天区发送和接收文字传输。

4.课程设计总结

这周的课程设计很短,但收获很多。我用C#进行了TCP文件传输软件。不但又加深了课本的知识,而且也对C#的基本知识有了一定掌握。

本次课程设计中实现了通信基本知识与C#编程的结合,并在实际中设计并调试TCP文件传输的过程。

个人感觉此次课程设计很有挑战性,主要是老师为了锻炼我们的能力,煞费苦心位设计了多个题目。不过,老师给了很多的参考资料和代码,并且我们发挥自己的主观能动性,终于找到了思路,完成了项目的设计。

在项目设计过程中,我深切的体会到理论和实践的区别,平时在理论中被认为是理所当然的东西在模拟实践中往往会被颠覆,所以在以后的学习中必须与实践紧密结合,以此实现到实际工作中的快速转换。

参考文献

[1] 马骏,郑逢斌,沈夏炯.C#网络应用高级编程.人民邮电出版社,2006,10(1):14-17.

[2](美)库罗斯(Kurose,J.F.)等著;陈鸣译.计算机网络:自顶向下方法.机械工业出版社,2008.12:154-168

相关主题
相关文档 最新文档