2011-11-04 4 views
0


아래 코드 파일의 일부를 ftp에 연결하고 지정된 경로에서 내용을 확인합니다.
문제는 내 앱이 중요한 문제없이 실행되고 있다는 것입니다. 하지만 오늘은 다른 컴퓨터에 설치하라는 요청을 받았고 FTP 프로토콜이 작동하지 않습니다. C# FTP.ListDirectoryDetails - 다른 컴퓨터에서 다른 응답

오늘의 응용 프로그램은 4-5 기계 (XP/WIN7 승리)에서 실행되었다까지, 그리고 Ftp.ListDirectoryDetails 값이 HTMLlike 반환
<DIR> ..
09/28/11 10:43 [GMT] <DIR> .

(불행하게도 유래는 코드 블록 내부의 HTML 태그를 무시하지 않습니다 ...)

그리고 다음 컴퓨터에 내 응답은 같다 : 그런 일이 왜 drwxrwxrwx 1 user group 0 Oct 19 11:34 hr

사람이 생각이 있습니까 ? 그 문제를 해결하는 방법? 다음은

는 물건을

  FtpWebRequest request = FtpWebRequest.Create(path) as FtpWebRequest; 
      LogAnything("ConnectTo(" + sPath + ")"); 
      request.Credentials = new NetworkCredential(login, pswd); 
      request.UsePassive = true; 
      request.UseBinary = true; 
      request.KeepAlive = true;    

      request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
      FtpWebResponse response = request.GetResponse() as FtpWebResponse; 
      Stream responseStream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(responseStream); 

      string sPattern = @">(.*)<.A>"; 
      string sSource; 
      ArrayList ContentList = new ArrayList(); 

      while ((sSource = reader.ReadLine()) != null) 
      { 
       LogAnything("Spam: " + sSource); 
      } 

안부,
표트르

답변

-3

FTP는 내가 만난 가장 불안정한 프로토콜을 수행 내 코드의 일부입니다. 많은 일이 일어날 수 있습니다. 스트림은 이유없이 잘릴 수 있습니다. 설명없이 연결을 종료 할 수 있습니다. 일부 응답은 원할 때 형식을 변경할 수 있습니다. 등. 모든 FTP 코드는 FTP를 매우 공격적으로 응용할 수 있으므로 매우주의해야합니다.

+0

구체적으로 불안정한 것은 어떨까요? –

2

FTP 사양은 파일 목록에 대해 통일 된 형식을 정의하지 않습니다. 첫 번째 형식은 Windows 형식이고 두 번째 형식은 Unix 형식입니다. 일률적 인 목록을 얻는 유일한 방법은 MLST 및 MLSD 명령을 사용하는 것이지만 목록 및 확장 명령을 제대로 사용하려면 일부 타사 구성 요소가 필요합니다.

+0

목록에 가능한 더 많은 형식이 있습니까?

두 개만있는 경우 형식을 확인하고 응답을 형식에 따라 구문 분석하는 것은 그리 복잡하지 않습니다. – Piotroslav

+0

@piotroslav 예, Indy VCL 라이브러리의 파서에는 약 400 개의 형식에 대한 파서가 포함되어 있습니다. –

관련 문제