写了一个FTP上传程序,为什么没有返回 226 Transfer complete.?

benjamin8064 2006-10-18 08:22:42
服务器返回:

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
...全文
1083 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyaner 2006-10-25
  • 打赏
  • 举报
回复
同样的问题,无法解决呢。楼上的解决了吗?
benjamin8064 2006-10-24
  • 打赏
  • 举报
回复
leongwong 2006-10-22
  • 打赏
  • 举报
回复
关注!
benjamin8064 2006-10-21
  • 打赏
  • 举报
回复
另外,我测了一下这个程序
如果我上传文件后,立即发list命令,会报
425 Try later, data connection in use.
而当我再发pasv命令后,才会返回
227 Entering Passive Mode (***,***,***,***,***,***)

226 Transfer complete.
Dunzip 2006-10-19
  • 打赏
  • 举报
回复
没有信息返回的原因很多阿,自己先从简单的调试,看看那里出了问题。
benjamin8064 2006-10-19
  • 打赏
  • 举报
回复

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧