內網客戶端使用一切正常,外網通過瀏覽器、檔案夾可以正常訪問ftp服務器,但是有部分用戶用delphi做的程式卻連不上ftp服務器,奇怪的是把電腦網路切換成手機熱點共享的網時卻可以連上,甚至有的正常使用了一年多了,突然連不上,只能用手機熱點。ftp服務器用的是filezilla,設定的被動模式。
procedure Tsorder4Form.cxbtn1Click(Sender: TObject);
var
bc, sp, sf, fd, s, sf1,wj: string;
ftp: tidftp;
lst: TStrings;
begin
with TIdFTP.Create(nil) do
try
Port := gftp_port;
Passive :=true;
PassiveUseControlHost := true;
Host := gFtpserver;
Username := gftp_user;
Password := gftp_pass;
lst := TStringList.Create;
try
Connect; //在這里報錯,連不上ftp服務器,換成手機熱點的網路卻正常
cxm1.Lines.Clear;
cxm1.Lines.Add('開始下載檔案...');
tblo.First;
while not tblo.EOF do
begin
bc := tblo.FieldByName('bcode').Value;
sp := Format('\Original\%s\%s\', [formatdatetime('yyyymmdd',tblo.FieldByName('bdate').AsDateTime), bc]);
fd := cxbtndt1.Text;
if tblo.FieldByName('file1').IsNull then
sf := ''
else
sf := tblo.FieldByName('file1').Value;
if sf <> '' then
begin
try
sf1 := tblo.FieldByName('wo_id').AsString + '_'+sf;
if FileExists(fd+sf1) then DeleteFile(fd+sf1);
Get(sp+sf, fd+sf1);
except
on e:Exception do
begin
if FileExists(fd+sf1) then DeleteFile(fd+sf1);
cxm1.Lines.Add(Format('%s 檔案%s不存在.', [bc, sf1]));
end;
end;
end;
tblo.Next;
Application.ProcessMessages;
end;
cxm1.Lines.Add('檔案下載結束.');
OpenDialog(s, '瀏覽檔案', '所有檔案(*.*)', '*.*', true, fd);
except
on e: Exception do
begin
cxm1.Lines.Add('連接檔案服務器錯誤:'+e.Message);
end;
end;
finally
if Connected then Disconnect;
Free;
lst.Free;
end;
end;
uj5u.com熱心網友回復:
沒有外網IP。uj5u.com熱心網友回復:

程式進行下載時的錯誤提示
uj5u.com熱心網友回復:
@tanqth 你好 能說詳細點嗎 我不太明白uj5u.com熱心網友回復:
錯誤提示應該是客戶端被服務器斷開了。基于:甚至有的正常使用了一年多了、只能用手機熱點。
那么:說明手機熱點與非手機熱點下的網路環境不同,以及現在的非手機熱點網路與正常使用一年時間的非手機熱點網路環境也可能不同;
然后,你filezilla,設定的被動模式;既然以前能用,熱點能用,那不能用的應該主要在網路環境不同方面,應該主要在服務模式可網路方面。
最后,建議:1、檢查服務端是不是被動模式;2、有沒有防火墻阻斷;
uj5u.com熱心網友回復:
1. 使用主動模式還是被動模式,一般是由客戶端決定的, 跟ftp服務器無關。2. 瀏覽器里面的ftp使用的是主動模式,你試一下把程式設為主動模式(其實就是傳輸資料時客戶端通過命令通道向ftp服務器提供客戶端的埠號,由服務器主動向客戶端發起連接,建立資料傳輸通道),ftp.Passive := False; ,看看能不能解決. 注意這要求客戶端windows防火墻允許接入。
3.如果還不行,改用Serv-U ftp 服務器測驗一下,看看有沒有問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/12691.html
標籤:語言基礎/算法/系統設計
上一篇:DelphiIDE擴展開發
下一篇:大佬們幫我看看這個問題怎么解決
