Foxtable(狐表)用户栏目专家坐堂 → 获取ftp服务器文件列表不到


  共有6466人关注过本帖树形打印复制链接

主题:获取ftp服务器文件列表不到

帅哥哟,离线,有人找我吗?
ouyangfenghuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
获取ftp服务器文件列表不到  发帖心情 Post By:2022/3/1 19:43:00 [只看该作者]

连接成功,打开FTP客户端后信息如下:

[19:33:51] 正在列表
[19:33:51] 进入PASV模式失败,500 Command unrecognized : PASV
[19:33:51] 列表失败,425 Sorry, need PORT command first
[19:33:51] 正在列表
[19:33:51] FTP错误,System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一个现有的连接。
   at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at Foxtable.FTPClient.o.O.O.0.(String A_0, Boolean A_1)
[19:33:51] 进入PASV模式失败,425 Sorry, need PORT command first
[19:33:51] FTP错误,System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一个现有的连接。
   at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at Foxtable.FTPClient.o.O.O.0.(String A_0, Boolean A_1)
[19:33:51] 列表失败,425 Sorry, need PORT command first

用fliezilla连接信息如下:
状态: 正在连接 192.168.1.30:21...
状态: 连接建立,等待欢迎消息...
响应: 220 Welcome to XinDai Ftp Server version 1.1 
命令: USER cnc
响应: 331 Password required
命令: PASS ***
响应: 230 cnc logged in
命令: SYST
响应: 500 Command unrecognized : SYST
命令: FEAT
响应: 500 Command unrecognized : FEAT
状态: 已连接
状态: 读取目录列表...
命令: PWD
响应: 257 "d:/Cnc/NcFiles" is current directory
命令: TYPE I
响应: 200 Binary mode
命令: PASV
响应: 500 Command unrecognized : PASV
命令: PORT 192,168,1,142,253,255
响应: 200 Port command successful
命令: LIST
响应: 150 Openning data connection
响应: 250 Done
状态: 列出目录成功
状态: 读取目录列表...
命令: PASV
响应: 500 Command unrecognized : PASV
命令: PORT 192,168,1,142,239,128
响应: 200 Port command successful
命令: LIST
响应: 150 Openning data connection
响应: 250 Done
状态: 列出目录成功

是还要添加什么代码用来发送端口命令吗?




 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/1 20:34:00 [只看该作者]

参考这里的方法设置pasv模式:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&replyID=714466&ID=104284&skin=1

 回到顶部
帅哥哟,离线,有人找我吗?
ouyangfenghuan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2022/3/1 22:07:00 [只看该作者]

提供ftp服务的是数控车床的控制器,不是电脑没法设置。现在是用狐表打不开列表,用fliezilla可以。
狐表提示[19:33:51] 列表失败,425 Sorry, need PORT command first

 回到顶部
帅哥哟,离线,有人找我吗?
ouyangfenghuan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2022/3/1 22:09:00 [只看该作者]

有没有相应代码解决这个错误提示?

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/1 22:35:00 [只看该作者]

试试使用.net提供的FtpWebRequest自己实现一个ftp客户端:https://docs.microsoft.com/zh-cn/dotnet/api/system.net.ftpwebrequest?view=netframework-4.0

 回到顶部
帅哥哟,离线,有人找我吗?
ouyangfenghuan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2022/3/3 20:01:00 [只看该作者]

老师这个一般是什么情况?在命令窗口执行下列代码

Dim ftp1 As New FtpClient
ftp1.Host="192.168.1.23"
ftp1.Account = "anonymous"
ftp1.Password = "anonymous-guest"
ftp1.UTF8= True
If ftp1.Connected Then
    Output.Show(ftp1.CurrentDir)
Else
    ftp1.Connect
    Output.Show(ftp1.CurrentDir)
End If


If ftp1.Upload("c:\data\SP1201.NC","\SP1201.NC",True) = True Then
    output.show("上传完成!")
Else
    output.show("上传失败!")
End If

If ftp1.Download("\SP1201.NC","c:\data\08452.NC",True) = True Then
    output.show("下载完成!")
Else
    output.show("下载失败!")
End If
Output.Show("end")




输出反馈结果如下:
/
上传完成!
下载失败!
end

过程图片如下:

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看







 回到顶部
帅哥哟,离线,有人找我吗?
ouyangfenghuan
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2022/3/3 20:16:00 [只看该作者]

从微软上的FtpWebRequest完全看不懂,也是同样写在代码里面吗?麻烦老师指点下


下面的代码示例演示如何使用类从 FTP 服务器下载文件 WebClient 。

public static bool DisplayFileFromServer(Uri serverUri)
{
    // The serverUri parameter should start with the ftp:// scheme.
    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    WebClient request = new WebClient();

    // This example assumes the FTP site uses anonymous logon.
    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
    try
    {
        byte [] newFileData = request.DownloadData (serverUri.ToString());
        string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
        Console.WriteLine(fileString);
    }
    catch (WebException e)
    {
        Console.WriteLine(e.ToString());
    }
    return true;
}

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/3 20:35:00 [只看该作者]

6楼估计还是pasv的问题。

微软的文档里可以选择看vb的代码的

 回到顶部