写了一个FTP上传程序,为什么没有返回 226 Transfer complete.?
服务器返回:
220 ProFTPD 1.2.10 Server [***.***.***.***]
331 Password required for ***.
230 User *** logged in.
227 Entering Passive Mode (***,***,***,***,***,***).
150 Opening ASCII mode data connection for aaa.txt
已经确认文件上传成功了
********************
源程序如下
Dim downorup As String
Private Sub Form_Load()
Winsock1.Connect "***.***.***.***", 21
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData
Text1.Text = Text1.Text & vbCrLf & strData
If Left(strData, 3) = "220" Then '若命令连接成功
Login '登录
End If
If Left(strData, 3) = "227" Then '若成功进入PASV方式
MakeDataConnection strData '建立数据连接
End If
End Sub
Private Sub Login()
Winsock1.SendData "USER *****" & vbCrLf '发送用户名
Winsock1.SendData "PASS *****" & vbCrLf '发送密码
End Sub
Private Sub Setpasv()
Winsock1.SendData "PASV" & vbCrLf '设置PASV方式
End Sub
Private Sub upload_Click()
downorup = "up"
Setpasv
End Sub
Private Sub Winsock2_Connect()
If downorup = "up" Then '上传文件,数据连接建立后发送数据
Dim a As String
Dim MyString As String
Open "aaa.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, a
MyString = MyString + a + Chr(13) + Chr(10)
Loop
Close #1
Winsock2.SendData MyString & vbCrLf
End If
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Winsock2.GetData strData
Text1.Text = Text1.Text & vbCrLf & strData
End Sub
Private Sub MakeDataConnection(sData As String)
Dim iPos As Integer, iPos2 As Integer
Dim strDataAddress
iPos = InStr(1, sData, "(") + 1 '获取IP地址
For i = 1 To 4
iPos2 = InStr(iPos, sData, ",")
strDataAddress = strDataAddress & Mid(sData, iPos, iPos2 - iPos) & "."
iPos = iPos2 + 1
Next
strDataAddress = Left(strDataAddress, Len(strDataAddress) - 1)
Dim i1 As Single, i2 As Single, inPort As Single '计算端口号
iPos = iPos2 + 1
iPos2 = InStr(iPos, sData, ",")
i1 = CSng(Mid(sData, iPos, iPos2 - iPos))
iPos = iPos2 + 1
iPos2 = InStr(iPos, sData, ")")
i2 = CSng(Mid(sData, iPos, iPos2 - iPos))
inPort = i1 * 256 + i2
If Winsock2.State <> 0 Then
Winsock2.Close
End If
Winsock2.Connect strDataAddress, inPort
End Sub
Private Sub Winsock2_SendComplete()
Winsock1.SendData "TYPE ASCII" & vbCrLf
Winsock1.SendData "STRU record-structure" & vbCrLf
Winsock1.SendData "STOR aaa.txt" & vbCrLf
End Sub
220 ProFTPD 1.2.10 Server [***.***.***.***]
331 Password required for ***.
230 User *** logged in.
227 Entering Passive Mode (***,***,***,***,***,***).
150 Opening ASCII mode data connection for aaa.txt
已经确认文件上传成功了
********************
源程序如下
Dim downorup As String
Private Sub Form_Load()
Winsock1.Connect "***.***.***.***", 21
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData
Text1.Text = Text1.Text & vbCrLf & strData
If Left(strData, 3) = "220" Then '若命令连接成功
Login '登录
End If
If Left(strData, 3) = "227" Then '若成功进入PASV方式
MakeDataConnection strData '建立数据连接
End If
End Sub
Private Sub Login()
Winsock1.SendData "USER *****" & vbCrLf '发送用户名
Winsock1.SendData "PASS *****" & vbCrLf '发送密码
End Sub
Private Sub Setpasv()
Winsock1.SendData "PASV" & vbCrLf '设置PASV方式
End Sub
Private Sub upload_Click()
downorup = "up"
Setpasv
End Sub
Private Sub Winsock2_Connect()
If downorup = "up" Then '上传文件,数据连接建立后发送数据
Dim a As String
Dim MyString As String
Open "aaa.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, a
MyString = MyString + a + Chr(13) + Chr(10)
Loop
Close #1
Winsock2.SendData MyString & vbCrLf
End If
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Winsock2.GetData strData
Text1.Text = Text1.Text & vbCrLf & strData
End Sub
Private Sub MakeDataConnection(sData As String)
Dim iPos As Integer, iPos2 As Integer
Dim strDataAddress
iPos = InStr(1, sData, "(") + 1 '获取IP地址
For i = 1 To 4
iPos2 = InStr(iPos, sData, ",")
strDataAddress = strDataAddress & Mid(sData, iPos, iPos2 - iPos) & "."
iPos = iPos2 + 1
Next
strDataAddress = Left(strDataAddress, Len(strDataAddress) - 1)
Dim i1 As Single, i2 As Single, inPort As Single '计算端口号
iPos = iPos2 + 1
iPos2 = InStr(iPos, sData, ",")
i1 = CSng(Mid(sData, iPos, iPos2 - iPos))
iPos = iPos2 + 1
iPos2 = InStr(iPos, sData, ")")
i2 = CSng(Mid(sData, iPos, iPos2 - iPos))
inPort = i1 * 256 + i2
If Winsock2.State <> 0 Then
Winsock2.Close
End If
Winsock2.Connect strDataAddress, inPort
End Sub
Private Sub Winsock2_SendComplete()
Winsock1.SendData "TYPE ASCII" & vbCrLf
Winsock1.SendData "STRU record-structure" & vbCrLf
Winsock1.SendData "STOR aaa.txt" & vbCrLf
End Sub
...全文
相关推荐
毕业设计&课程设计&毕设&课设-java-社区疫情防控平台
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
毕业设计&课程设计&毕设&课设-java-ssm社区疫情防控管理信息系统
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
毕业设计&课程设计&毕设&课设-java-校园疫情防控系统
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
百套毕设之-java(演示+源码)springboot社区疫情防控平台.zip
百套毕设之-java(演示+源码)springboot社区疫情防控平台.zip
课设毕设springboot校园疫情防控系统-LW+源码可运行.zip
课设毕设基于SpringBoot的系统源码可运行


网络编程
