with idFTP1 do begin
Host := IP;
PORT := StrToInt(PT);
Username := ID;
Password := PASS;
try
Connect(true,7000); ------①
//Connect(); ------②
Except
on EIdSocketError do begin ------③
Application.MessageBox( '서버를 찾을수 없습니다', '에러',MB_ICONERROR+MB_OK );
AllBtnOn;
P_send.Visible := False;
exit;
end;
end;
제가 한 코딩입니다..
ftp로 파일을 업로드 시키는 구문이죠..
문제는 ftp서버로 인하여 접속이 안될 경우 에러를 터뜨리고 싶은데요..
③같은 코딩을 하였기에(이곳에 질문해서 얻은 코딩입니다^^)
①,②중 ②와 같이 connect();하였을경우
※참조 : connect함수 이렇습니다.
procedure TIdFTP.Connect(AAutoLogin: boolean = True;
const ATimeout: Integer = IdTimeoutDefault);
시간이 디폴트로 먹어서 (-1이더군요)
한 20초 정도 지난후에 제가 지정한 에러메세지가 뜹니다.
그리하여 ①과 같이 시간을 지정 (7000은 7초입니다)하였더니
7초후 제가 지정한 에러가 아닌 CONNECT TIME OUT이라는 영문 에러가 뜹니다.
그 영문 에러띄우는곳을 찾아보려고 아무리 찾아봐도 못찾았습니다..
디폴트시간을 주었을때는 아주 긴시간후 소켓에러를 발생하여 제가 코딩한 에러가 뜨는데... 시간을 지정해주면 영문에러가 뜹니다...
제가 지정한 에러를 뜨게 해주는 방법 없을까요???
부탁드립니다...
Connect할때 발생되는 예외는 여러가지가 있습니다. EIdSocketError말고도 님같은 상황에서 타임아웃이 발생할때 나는 EIdConnectTimeout 예외, 이미 연결된 서버에 또 다시 연결할 때 발생하는 EIdAlreadyConnected예외등등 많이 있습니다...
이런 여러가지 예외를 한꺼번에 다 처리하실려면 EIdSocketError말고 Indy클래스 모든 예외의 조상이 되는 EIdException을 이용하세요...
try
......
Connect(True, 7000);
except
on EIdException do
begin
Application.MessageBox('...');
end;
end;
^^ 항상 즐코하세요...