以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 获取ftp服务器文件列表不到 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175352) |
-- 作者:ouyangfenghuan -- 发布时间:2022/3/1 19:43:00 -- 获取ftp服务器文件列表不到 连接成功,打开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 状态:
列出目录成功 是还要添加什么代码用来发送端口命令吗? |
-- 作者:有点蓝 -- 发布时间:2022/3/1 20:34:00 -- 参考这里的方法设置pasv模式:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&replyID=714466&ID=104284&skin=1 |
-- 作者:ouyangfenghuan -- 发布时间:2022/3/1 22:07:00 -- 提供ftp服务的是数控车床的控制器,不是电脑没法设置。现在是用狐表打不开列表,用fliezilla可以。 狐表提示[19:33:51] 列表失败,425 Sorry, need PORT command first
|
-- 作者:ouyangfenghuan -- 发布时间:2022/3/1 22:09:00 -- 有没有相应代码解决这个错误提示? |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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") 输出反馈结果如下: |
-- 作者:ouyangfenghuan -- 发布时间:2022/3/3 20:16:00 -- 从微软上的FtpWebRequest完全看不懂,也是同样写在代码里面吗?麻烦老师指点下 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; } |
-- 作者:有点蓝 -- 发布时间:2022/3/3 20:35:00 -- 6楼估计还是pasv的问题。 微软的文档里可以选择看vb的代码的
|