文件传输协议【优秀3篇】

读书是学习,摘抄是整理,写作是创造,这里是漂亮的编辑帮家人们收集整理的文件传输协议【优秀3篇】,欢迎阅读。

文件传输协议范文 篇1

关键词:TCP协议;Winsock控件;网络编程;

文件传输

一、Winsock控件基础

Winsock即Windows Sockets规范的简称,是目前最流行的网络通信应用程序接口之一。所谓Socket,通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。Winsock控件可以与远程计算机建立连接,并通过用户数据报协议UDP或者传输控制协议TCP进行数据交换,这两种协议都可以用来创建客户与服务器应用程序。与Timer控件和CommandDialog控件类似,Winsock控件在运行时是不可见的。在使用Winsock控件时,首先需要考虑使用什么协议。可以使用的协议包括UDP和TCP。两种协议之间的重要区别在于它们的连接状态:TCP协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,用户必须先建立连接。UDP协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。到底选择哪一种协议通常是由需要创建的应用程序决定的。本文以TCP为例介绍文件传输。

TCP协议的全名为“传输控制协议(transfer control protocol)”,这是一种在Internet上使用的 主要协议。因此,当您使用TCP协议连接两个网络上的设备时,将可以在它们之间交换希望交换的数据。

同时,如果您开发的应用程序属于主从式应用架构应用系统时,将必须要知道应用系统主机的ip地址(利用RemoteHost属于取得)以及连接端口号(利用remoteport属于取得)。在这些数据完全备齐之后,您才可以进行进一步的调用、连接。

因此,如果正在建立主机端应用程序时,必须指定本机,必须指定本机(执行应用程序所在的计算机)所用的连接端口号(localport属于),接着将Winsock控件设置为“监听(listen)”,即可等候远程客户端进行调用与连接。因此,当主机端接收到客户端调用并且要求连接的信息时,将会触发“要求连接()”的事件,接着进行标准“允许”或是“拒绝”的程序。

一旦主机端与客户端连接完成之后,您将可以开始使用“传送数据(senddata)”方法,将数据传送给对方,并且利用“传送完成(sendcomplete)”事件,来检测数据是否传送完毕。同时,在数据传达对方的计算机时,将会触发对方计算的“接收数据(dataarrival)”事件。此时,您可以使用“取得数据(getdata)”方法,来去出这些接收到的数据。

二、Winsock控件工作原理

Winsock控件是基于Socket规范创建的,所以其通信的实质是对Socket接口进行数据的读写操作。如果两个应用程序需要通信,它们可以通过使用Socket类来建立套接字连接,可以将这个过程想象为一次电话呼叫过程:呼叫者通过拨号与被呼叫者连接,当电话接通时,双方都可以自由通话了,只不过这里的呼叫者被称为“客户”,被呼叫者则称为“服务器”,而号码则为“IP地址+端口”,但在建立连接之前,必须由“客户”发出呼叫,且此时的“服务器”正在监听。因此,基于TCP/IP协议的通信,需要分别建立客户端应用程序和服务器端应用程序。

三、基本实现方法

客户端要与服务器端进行通信,首先,必须知道服务器端的域名或IP地址(RemoteHost属性),就像要和某人打电话前,必须知道对方的电话号码;其次,还必须和服务器端约定相同的端口(RemotePort属性),用于数据的输入和输出;最后,调用Connect方法与服务器端建立连接。

四、实例实现

(一)实现原理

本文将实现的文件传输只有一个发送方和一个接收方,这是最基本的文件传输方式,运用的原理也比较简单:发送方先获取待传输文件的基本信息,主要是文件名及文件长度;然后,将其发送给接收方;接着,建立和文件一样大小的数据缓冲区,并将文件读入;最后,将数据缓冲区中的数据发送给接收方。与此同时,当接收方接收到文件名和文件长度之后,就为其创建新的文件和数据缓冲区;然后,接收传输的文件数据,并将其放在数据缓冲区中;最后,依次将数据缓冲区的数据写入新创建的文件中。这样便完成了不同计算机之间的文件传输。

(二)服务器端主程序主要代码

'发送文件名和文件长度代码:

Winsock1.SendData filename

Winsock1.SendData filelength

'发送文件的内容

Open filepath For Binary As #1'设置数据缓冲区

ReDim data(filelength)

For j = 1 To filelength

Get1,j, data(j)

Next

send = filelength

Winsock1.SendData data

Close #1

End Sub

"客户端请求连接"事件代码:

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

If Winsock1.State 0 Then

Winsock1.Close

End If

Winsock1.Accept requestID '接受客户请求

End Sub

(三)客户端主程序主要代码代码

"连接"按钮事件的代码:

Private Sub connect_Click()

Winsock1.Protocol = sckTCPProtocol'以TCP方式进行通信

'设置远程服务器IP地址,为方便调试笔者使用的是自身的IP地址

=

'设置远程服务器通信程序端口号,与服务器端相同

= Val

'与服务器端建立连接

End Sub

"数据到达"事件的代码:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

'状态栏显示提示文字

StatusBar1.SimpleText = "正在接收服务器发送的数据。"

'先接收文件名和文件的长度

If flag = True Then

filename, vbString, bytesTotal - 4

filelength, vbLong

'建立文件

Open filename For Binary As #1

flag = False

Else

'设置缓冲区

ReDim data(bytesTotal)

'接收数据并写入文件

data, vbArray + vbByte

For j = received + 1 To received + bytesTotal

Put1,j, data(j - received - 1)

Next

'更新接收到的数据

received = received + bytesTotal

ProgressBar1.Value = Int((received / filelength) * 100)

If ProgressBar1.Value>= 100 Then Close #1

End If

End Sub

从以上的实例中,基本了解了有关Winsock控件的使用方法和文件传输的过程。然而,当需要传送的数据比较大时,就不能像以上介绍的那样,直接将整个文件放入数据缓冲区中了,我们的内存是无法忍受用一个几百MB甚至上GB的空间去存储那些临时数据的。显然,这种做法已远不能满足我们的需求,这时可以将文件按照一定的大小,分成若干个数据包。首先,设置数据包的大小,根据文件的基本信息,计算出总共需要的数据包数;然后,依次读取同数据包一样大小的数据到数据缓冲区中;接着,将数据缓冲区中的数据,发送到指定的计算机上;同时在另一端,建立一个数据缓冲区,缓冲区的大小要根据接收到的数据来确定,依次接收客户端传输过来的数据包,并将数据缓冲区的数据写入相应的文件中,这样就很容易实现大文件的传输了。

五、小结

本文通过在VB中使用Winsock控件,实现网络之间的文件传输,更进一步理解了其工作原理。虽然本文重点介绍的是TCP协议的文件传输,但是UDP协议的文件传输实现与TCP是相似的。本文介绍的Winsock工作原理、实现方法、实例的展现还是有普遍的适用性的,能在一定的程度上有助于解决普遍的问题。

参考文献

[1]黄玲玲,杨剀,王颖。在VB中使用Winsock控件实现局域网通信[J].信息技术,2005,6

[2]王晓平,钟军。VisualBasie网络通信协议分析与应用实现。2003

文件传输协议范文 篇2

黄河、黄河,这是长江,请开炮收到,正在汇报,正在汇报,完毕。

当时觉得他们说话特别嗦,重复呼叫名号、自报家门、重复对方要求,重复自己的话,最后还加个完毕,看着都着急。

很不幸,在网络世界,电脑和电脑之间的通讯,比这个“嗦”有过之而无不及。

这个所谓的“嗦”,是因为战场通讯和网络通讯有很多相似的地方:环境恶劣、距离遥远、干扰众多而又要内容不失真,所以通讯双方,都要反复验证信息传送的正确性。这一套通话的模式,在网络世界里称为协议,而上面那种通话模式―互相喊话、确认身份、确认发送的信息、确认发送结束,可以比拟为网络中最常用的TCP协议(见图1)。

小提示:

TCP协议是TCP/IP协议的一部分,而TCP/IP协议是互联网的基础。通俗地理解,TCP是“说话”的方式、IP协议用来“呼叫”通话的电脑。

QQ传输文件比MSN快?原因一

QQ、MSN在传文件时,将文件的数据分成很多小数据包,每个包里面再添加上这些嗦的“话”,以保证能可靠地接收,毫无疑问“一分钟也传不了几句话”。

后来,QQ改革了,换了一种通话协议―UDP协议,这个协议如同发电报,将数据一股脑地发给对方,对方只简单地回复“收到”即可。至于全不全、对不对就不管了。这个协议效率很高,传送文件的速度当然就快了(见图2)。

小提示:

UDP协议虽然可靠性差、错误率高,但在网络视频应用中效果良好,视频聊天软件均采用此协议。另外,QQ也采取了一些措施来克服它的缺点,如让文件断点续传(MSN无断点续传功能)。

原因二,选择最近的路线

网络还有一个复杂的情况:两台互传文件的电脑可能远隔“千山万水”,要通过许多服务器、路由器、网关和电缆中转,才有可能达到目的地。UDP协议为了加快连接速度,会选择尽量短的路线(称为UDP直连模式)。而MSN使用的TCP协议,却先将数据包发送到MSN服务器,服务器再转送到目的地(称为TCP中转模式),数据正确性虽有保证,但绕了路,也会受到服务器拥堵的影响。

原因三,礼让与加塞

TCP协议是一个“和谐”的协议,当它发觉网络堵塞,会自动减慢数据包发送,让互联网保持通畅。而UDP协议是一个“霸道”的协议,它想尽一切办法将数据传送出去,而不管是否加重网络拥堵。

用什么传输比较稳定

通过上面的分析,稳定传输文件非MSN莫属么?其实MSN虽使用TCP协议,但中转太多,服务器又在国外,掉线率不比QQ少,因此从连接的稳定性而言,QQ和MSN差不多,但MSN传输的文件,错误率会小一些。

小提示:

文件传输完成后,赶快测试传输的文件是否有错误。另外,传输不畅,可以使用新浪UC、网易泡泡(见图3)、百度Hi等类似工具。

传大文件用什么

这次推荐QQ么?传大文件,QQ容易掉线、大小受限制(2GB)、数据错误率较高,这次推荐一款称为Lava-Lava的软件(/)。该软件文件传输性能和QQ差不多,但它提供的离线传输功能,速度很快,常可以达到你的网络的最大上传、下载速度,稳定性高,离线传输的文件大小不受限制(QQ限制1GB)。有人还通过注册2个Lava-Lava号来当网络硬盘使用呢。

小提示:

离线传输就是先将文件传送到服务器,然后接收方再从服务器下载。Lava-Lava的离线传输操作非常方便,在聊天窗口,选择“文件传输通过离线服务器转发文件”即可(见图4),或直接拖动文件到未上线好友的聊天窗口中。

文件传输协议范文 篇3

关键词:网络文件;传输机制;TCP;UDP

中图分类号:F49

文献标识码:A

文章编号:16723198(2013)01017001

0引言

网络信息技术的发展给我们的工作与生活带来了极大的便利,推动了信息在用户之间的快速流通。伴随着我们当前网络信息技术在日常生活中的普及,我们所需要的许多文件都是通过网络进行传输的。本文就对网络文件的传输机制问题进行了分析与讨论。

1TCP与UDP协议相关理论概述

1.1TCP相关理论概述

TCP是TCP/IP体系中面向连接的运输层协议,它提供全双工的和可靠交付的服务。所谓“面向连接”的含义就是在正式通信前必须要与对方建立起连接,否则通信就会无法进行。这种连接是实时的,只有双方都在时才能通信。

1.2UDP相关理论概述

UDP是面向非连接的用户数据包协议。“面向非连接”的含义是指在正式通信前不必与对方先建立连接,不管对方状态如何直接发送数据。UDP协议适用于可靠性要求不高的应用环境,或者根本不需要建立可开连接的情况。所以说,UDP协议能够快速的发送数据,降低系统连接时的消耗。

表面上看起来,UDP好像比TCP的速度更快,因为相比较UDP协议而言,TCP协议更加复杂一些,但是实际上并不完全是这样,特别是针对那些具有较强可靠性的应用,它们所需要的就是网络文件传输的稳定性与可靠性。在这种情况下,我们往往就会选择TCP协议。

2网络文件传输机制中的多线程技术应用

2.1多线程技术的定义

所谓多线程技术指的就是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,各个线程之间彼此互相独立。它和进程一样拥有独立的执行控制,由操作系统负责调度,二者的区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。

2.2文件传输中多线程技术的引入

为了能够让文件在网络传输过程中能够更快速,我们有必要应用多线程技术。使用多线程传输文件时,发送端和接收端在读写文件时必须把文件共享属性设置为Cfile::shareDentNone。这是因为在发送端会有多个线程同时只读一个文件。

3影响网络文件传输速度的因素分析

要想实现网络文件传输的最优状态,就应当充分掌握影响网络文件传输速度的各项因素。笔者通过分析现有理论以及自身的亲身实践,认为能够给网络文件传输速度带来较大影响的因素主要有以下两个方面:

3.1单词读取文件的大小

网络发送端每一次所读取的文件所包含的字节数以及网络接收端每一次写入文件所包含的字节数都会对网络文件的传输速度产生极大的影响。基于硬盘的读写性质,我们在进行读盘以及写盘的时候最好读入或者写入N个字节的数据(N为扇区的大小)。通过这种操作方式,能够加速文件被读入缓冲区以及写入磁盘的速度。

3.2套接字的个数

网络文件在传输过程中,通常状况下都是一个线程单独获取一个套接字。在这种模式下,套接字的数量也就等于传输线程的数量。这样就会产生这样一个问题:套接字的个数越多是不是就意味着网络文件的传输速度就会随着而增长呢?实践证明,而这并不是成比例增长的。比如,当我们在开展“一个线程单独获取一个套接字”的编程过程中,当套接字的个数(同线程的个数相等)到达一定规模时,如果再使套接字的数量持续上升,那么所表现出来的对于传输速度的提升就会越来越弱。在套接字的数量达到临界值以后,甚至还会降低传输速度。

通过上述分析可以看到,通过综合分析系统性能以及传输性能,假如选择“一个线程单独获取一个套接字”的模式进行编程,那么套接字数量的选择应当同处理器的能力相适应,不能设置的太高。

4结束语

通过上述几个部分的分析与论述,我们可以看到,将TCP应用于网络文件的传输具有更强的稳定性以及可靠性。在应用TCP开展网络文件传输过程中,为了更高效的促进网络文件的传输,还需要将多线程技术引入进来。本文在分析过程中涉及到了网络文件传输过程中的一些影响因素,希望能够对我国当前网络文件传输机制的不断完善提供一点可借鉴之处。

参考文献

[1]王国忱,娄丽娜。TCP服务器端程序的一种实现[J].内蒙古民族大学学报(自然科学版),2009,(06).

一键复制全文保存为WORD
相关文章