当前位置:编程学习 > VB >>

求教个关于VB WINSOCK远程获取FTP远程目录列表问题

本人想用WINDSOCK获取远程目录里的文件,包括未知级别的子目录里文件内容,获取文件进行批量下载,相当于一个FTP。
目前情况是可以单独获取一个文件内容,但是递归的时候WINSOCK却无法再次进行二级目录的访问。基本流程如下:
Private Sub Command1_Click()
FF(Folder)‘(第一次通过这个访问的时候一切正常,都能获取到,但是递归的时候却卡在了“wscControl.SendData "NOOP " & vbCrLf”返回的“200 NOOP command successful.”这一步不走了)
End Sub

Public Function FolderFile(Folder As String)
If wscControl.State <> 7 Then
MsgBox "请确认当前连接状态!"
Exit Function
End If
wscControl.SendData "NOOP " & vbCrLf
........
wscControl.SendData "TYPE I" vbCrLf
......
wscControl.SendData "PASV"& vbCrLf

TmpIp = PassiveInfo(tmp, 1)
TmpPort = PassiveInfo(tmp, 2)
wscControl.SendData "NLST " & Folder & vbCrLf
'数据下载部分
If wscList Is Nothing Then
Set wscList = Controls.Add("MSWinsock.Winsock", "wscList", Me)
TimerData.Interval = 100
TimerData.Enabled = True
End If
With wscList
.RemoteHost = TmpIp
.RemotePort = TmpPort
.Connect
End With

Allfiles = tmpL

Dim f As Integer, FL() As String
FL = Split(tmpL, vbCrLf)
For f = 0 To UBound(FL)
If InStr(Right(FL(f), 5), ".") > 0 Then
Allfiles = Allfiles & FL(f)
End If
Next
For f = 0 To UBound(FL)
If InStr(Right(FL(f), 5), ".") = 0 Then
If FL(f) <> "" Then
Allfiles = Allfiles & FF(FL(f)
End If
End If
Next
End Function

基本的wscControl是Set wscControl= Controls.Add("MSWinsock.Winsock", "wscControl", Me)生成的
想请问下高手是不是每次循环的时候都需要先关闭再重新连接?
或者每次访问都需要生成一个WINSOCK?

希望能给个比我更好的方法,因为半路出家,VB不熟,最好是源码
我的目的就是做一个自动的FTP
先谢了  --------------------编程问答-------------------- 分数不够啊,只有十分,希望版主能帮我移动技术版不?"编程..." --------------------编程问答-------------------- 顶起顶起顶起
补充:VB ,  非技术类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,