怎么通过ftp传送文本文件?
不知道你的winsock 是udp还是tcpip协议这里给你一个我写的实例 我是用的udp 这个发送了一段数据不一定接收就正确 所以我做了校验'以下是发送文件的Option ExplicitDim GetFileNum As Integer, LenFile As Long, SendByte() As Byte '发送的包Private Sub Command1_Click()On Error Resume NextCommand1.Enabled = FalseGetFileNum = FreeFile '取得未使用的文件号LenFile = FileLen(Text1.Text) '获得需传送的文件的长度If Text2.Text = "" Or Right(Left(Text2.Text, 2), 1) <> ":" Then Text2.Text = Text1.TextWinsock0.SendData "#SEND STA#" & LenFile & "//" & Text2.TextWt 0.5Open Text1.Text For Binary As #GetFileNum '打开需传送的文件Call TCPSendFile(Winsock0, GetFileNum, SplitFile) '传送文件Me.Caption = NowTi.Enabled = TrueEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim A As StringOn Error Resume NextCommand2.Top = -2000Winsock0.RemoteHost = IPX '服务器ipWinsock0.RemotePort = FilePortEnd SubPrivate Function SplitFile() As Long '拆包'为了清晰,下面分别用两个子过程来完成计算这次还可以传多少个字节的数据和传送数据On Error Resume NextDim GetCount As LongIf LenFile >= 4000 Then '计算出这次可发送的字节数GetCount = 4000LenFile = LenFile - GetCountElseGetCount = LenFileLenFile = LenFile - GetCountEnd IfSplitFile = GetCountEnd FunctionPrivate Sub TCPSendFile(objWinSock As Winsock, FileNumber As Integer, SendLen As Long)On Error Resume NextDim FileByte() As Byte, I As Long, j As Long, Temp As String * 4ReDim SendByte(0)ReDim FileByte(SendLen - 1)Temp = SendLen + 7SendByte = Temp '把长度负值给包头Get #FileNumber, , FileByte '读取文件ReDim Preserve SendByte(SendLen + 7) '把包头+到文件头For I = 0 To UBound(FileByte)SendByte(I + 7) = FileByte(I)'DoEventsNextWinsock0.SendData SendByteEnd SubPrivate Sub Form_Unload(Cancel As Integer)On Error Resume NextWinsock0.CloseErr.ClearEnd SubPrivate Sub TEnd_Timer()On Error Resume NextWinsock0.SendData "#END#"Err.ClearEnd SubPrivate Sub Ti_Timer()On Error Resume NextWinsock0.SendData "#ERR#"End SubPrivate Sub Winsock0_DataArrival(ByVal bytesTotal As Long)On Error Resume NextDim S As StringWinsock0.GetData SSelect Case SCase "ok" '成功继续发送If LenFile = 0 Then '发送完成If S <> "#SEND END#" Then Winsock0.SendData "#SEND END#"Me.Caption = "文件上传成功!"Command1.Enabled = TrueTi.Enabled = FalseTEnd.Enabled = TrueExit SubElseMe.Caption = "文件上传完成:[" & Left((FileLen(Text1.Text) - LenFile) / FileLen(Text1.Text) * 100, 4) & "%]"End IfCall TCPSendFile(Winsock0, GetFileNum, SplitFile)Case "#END#"TEnd.Enabled = FalseFMain.TiF.Enabled = TrueCase "no" '不成功重发上一个包Winsock0.SendData SendByteEnd SelectEnd Sub'以下是接收文件的Option ExplicitDim FOK As Boolean, Fs As Long, FileNumber As Integer, LenFile As Long '文件的长度Private Sub Command1_Click()Unload MeEnd SubPrivate Sub Command2_Click()On Error Resume NextDim A As StringMe.Caption = "开始下载"If Dir(Text2.Text) <> "" And ChV.Value = 0 ThenIf MsgBox("文件已经存在,覆盖吗?", vbCritical + vbYesNo) = vbYes Then Kill Text2.Text Else Exit SubElseKill Text2.TextEnd IfIf Text2.Text = "" Then Text2.Text = Text1.Text'Command2.Enabled = FalseIf Ch.Value = 0 Then A = "#DOW#" Else A = "#DOV#"FMain.Wsk.SendData A & Text1.TextWt 1FMain.Wsk.SendData "#DOE#" & Text2.TextEnd SubPrivate Sub Form_Load()Dim A As String'FMain.Ts.Enabled = TrueOn Error Resume NextIf FMain.Cb.Text = "本地组" Or FMain.Cb.Text = "全部组" ThenMe.Caption = "请重选下载用户[“组”不能正确下载]"ElseCommand1.Top = -2000Winsock0.LocalPort = FilePortWinsock0.BindEnd IfEnd SubPrivate Sub Form_Unload(Cancel As Integer)On Error Resume NextWinsock0.CloseErr.ClearEnd SubPrivate Sub La_Click()CDL.FileName = ""CDL.ShowOpenText2.Text = CDL.FileNameEnd SubPrivate Sub Winsock0_DataArrival(ByVal bytesTotal As Long)On Error Resume NextDim FileByte() As Byte, A As String, MendByte() As Byte, I As Long, J As Long, Temp As String, W As StringWinsock0.GetData FileByte, vbArray + vbByte '接收类型为:字节数组J = UBound(FileByte) '获得包长For I = 0 To 7 Step 2 '合并包头Temp = Temp & Chr(FileByte(I))NextFor I = 0 To 9 '文件发送结束标记A = A & Chr(FileByte(I))NextIf A = "#ERR#" Then Winsock0.SendData "no"If A = "#END#" ThenFor I = 0 To Len(FMain.TIn.Text)If I < 100 ThenW = Left(Right(FMain.TIn.Text, I), 1)If W = "!" ThenW = Left(Right(FMain.TIn.Text, I + 4), 5)Exit ForEnd IfElseExit ForEnd IfNext IIf W <> "下载完成!" ThenFOK = FalseMe.Caption = "下载完成![" & Text2.Text & "]"FMain.TIn.Text = FMain.TIn.Text & "[" & Now & "]" & "下载完成!(" & Fs & "<=" & LenFile & ")" & vbCrLfCommand2.Enabled = TrueEnd IfElseIf Val(Temp) = J Then '比较长度看丢包没有ReDim MendByte(J - 8)For I = 0 To J - 8 '提出包头MendByte(I) = FileByte(I + 7)NextFs = Fs + UBound(FileByte) - 7Put #FileNumber, , MendByte '写文件Winsock0.SendData "ok" '发送继续发送的请求Me.Caption = "文件下载完成:[" & Left(Fs / LenFile * 100, 4) & "%]"ElseIf Left(A, 10) = "#SEND STA#" ThenA = ""For I = 10 To UBound(FileByte) '文件发送结束标记A = A & Chr(FileByte(I))NextLenFile = Val(Left(A, InStr(A, "//") - 1))For I = 0 To Len(Text2.Text)A = Left(Right(Text2.Text, I), 1)If A = "" Then Exit ForNextIf Dir(Left(Text2.Text, Len(Text2.Text) - I + 1), vbDirectory) = "" Then MkDir Left(Text2.Text, Len(Text2.Text) - I + 1)'"#SEND STA#" & FileLen(Text1.Text) & "//" & Text2.TextFileNumber = FreeFile '取得未使用的文件号Fs = 0Open Text2.Text For Binary As #FileNumber '打开文件ElseIf A <> "#SEND END#" ThenWinsock0.SendData "no" '出现丢包,请求重发ElseWinsock0.SendData "#END#" '发送继续发送的请求Close #FileNumberResetIf FOK = False ThenFOK = TrueMe.Caption = "下载完成![" & Text2.Text & "]"FMain.TIn.Text = FMain.TIn.Text & "[" & Now & "]" & "下载完成!(" & Fs & "<=" & LenFile & ")" & vbCrLfCommand2.Enabled = TrueElseFOK = FalseEnd IfEnd IfEnd IfEnd IfEnd IfEnd Sub

ftp的主要功能是传送网上所有类型的文件,对吗?
正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
FTP主要是指FTP服务器,File Transfer Protocol Server的缩写了,主要用途,就是存储文件,按照FTP协议运行,你可以理解成仓库盘,啥都可以往上丢,也可以随便下载,没文件属性限制,只要你有足够的权限就行,

ftp是一个什么协议它可以用来下载和传送计算机中的文件
ftp:文件传输协议,比较古老的网络协议,采用客户/服务模式。客户端可以向服务器上传、下载文件。

FTP上传的是什么东西啊?是什么文件?有什么用?
FTP(File Transfer Protocol)是 Internet 上用来传送文件的协议(文件传输协议)。它是为了我们能够在 Internet 上互相传送文件而制定的的文件传送标准,规定了 Internet 上文件如何传送。也就是说,通过 FTP 协议,我们就可以跟 Internet 上的 FTP 服务器进行文件的上传(Upload)或下载(Download)等动作。 和其他 Internet 应用一样,FTP 也是依赖于客户程序/服务器关系的概念。在 Internet 上有一些网站,它们依照 FTP 协议提供服务,让网友们进行文件的存取,这些网站就是 FTP 服务器。网上的用户要连上 FTP 服务器,就要用到 FPT 的客户端软件,通常 Windows 都有“ftp”命令,这实际就是一个命令行的 FTP 客户程序,另外常用的 FTP 客户程序还有 CuteFTP、Ws_FTP、FTP Explorer等。要连上 FTP 服务器(即“登陆”),必须要有该 FTP 服务器的帐号。如果是该服务器主机的注册客户,你将会有一个 FTP 登陆帐号和密码,就凭这个帐号密码连上该服务器。但 Internet 上有很大一部分 FTP 服务器被称为“匿名”(Anonymous)FTP 服务器。这类服务器的目的是向公众提供文件拷贝服务,因此,不要求用户事先在该服务器进行登记注册。 Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”和“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。也就是说,用户只能从匿名FTP主机拷贝需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。在具有图形用户界面的 WorldWild Web环境于1995年开始普及以前,匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名PTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息,数据和软件。 人们只要知道特定信息资源的主机地址, 就可以用匿名FTP登录获取所需的信息资料。虽然目前使用WWW环境已取代匿名FTP成为最主要的信息查询方式,但是匿名FTP仍是 Internet上传输分发软件的一种基本方法。
FTP是指远程服务器文件存储,你指的因该是FTP上传是什么个情况,其它就是把 你电脑的文件通过FTP软件上传到远程服务器上面。
FTP上传是通过 ftp协议把文件从本地电脑和远程服务器传输的过程,包括上传和下载的过程。文件类型很多了,任何文件都可以上传下载。
FTP是上传为主要的东西,和迅雷下载作用是相反的原理。假如你在A机器上配置好FTP服务器,再添加个FTP用户,然后你在B机器,就可以用你设置的用户名和密码上传文件到A机器上。把FTP理解为和迅雷是相反作用的东西就OK了。

FTP协议可以传输文本文件,也可以传输压宿文件、图形/图像文件、声音文件、电影文件等()文件。
二进制文件 计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本)文件,图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件。和文本文件相对的概念就是二进制文件,你列举的那些都属于二进制文件同样,在FTP协议的传输模式部分有:FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二 进制方式对文本文件和数据文件都是有效的。
二进制文件
可执行
影音文件

本文由 在线网速测试 整理编辑,转载请注明出处。