如何判断idftp客户端与server是否相连,好象用idftp1.ClosedGracefully来判断不行啊!!!!(急)(100分)

  • 主题发起人 主题发起人 myveremy
  • 开始时间 开始时间
M

myveremy

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个timer中实时的检查是否与FTP server相连,如果断掉就重连。
急啊!!!!!
谢谢。
 
if not FTcpClient.Connected then
begin
try
FTcpClient.Connect;
except
FTcpClient.Disconnect;
end;
end;
 
用idftp1.connected来判断不行啊!
比如我先连上,然后网络断掉的话,它还为true啊!!!!(除非你给它一个idftp1.diconnnect的动作)。

希望大家帮我看看,急啊!
 
定期的发送数据"例如:在吗?",另一端回复"在"这样就可以知道是否通了。
我没有试过,你试试看吧!
 
我定期的发idftp1.noop过去,但是有时候我正在下载中,然后发noop过去,它那边要等很就才回复,这时我就认为它断了,然后重连,但事实上它没有断啊!!!!

问题没搞定,继续中!!!
 
自个顶下!!!!
 
大伙都跑去泡妞去了,没人帮我看下??????
 
完整点,增加对意外断线的判断:
if FTcpClient.Connected then
begin
try
FTcpClient.CheckForGracefulDisconnect(False);
//或你的Indy版本没有CheckForGracefulDisconnect方法,改用下面的
//ReadFromStack(False, 1, False);
except
FTcpClient.Disconnect;
end;
end;
if not FTcpClient.Connected then
begin
try
FTcpClient.Connect;
except
FTcpClient.Disconnect;
end;
end;
 
1.一般是先检查Timeout
2.Socket意外终止都会发送一个WSAECONNABORTED(10053)信息对应IDFTP的Id_WSAECONNABORTED
 
对,的确Socket意外终止都会发送一个信息,但我要怎样才能截住这个信息并判断呢????
 
procedure TFm_MainServer.IdFTPServer1Exception(AThread: TIdPeerThread;
AException: Exception);
begin
//在IdTCPServer单元里 804 行里
//这里没有测试,不知是否对
// EIdSocketError 是加IdException单元
case EIdSocketError(AException).LastError of
Id_WSAECONNABORTED // WSAECONNABORTED - Other side disconnected
, Id_WSAECONNRESET:
Connection.Disconnect;
end;
end;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部