2012-04-27 5 views
0

간단한 FTP 서버를 구현하고 있습니다. 디버깅 할 때 FileZilla 클라이언트를 사용하여 서버를 연결하려고합니다. 명령 패널에서 발견 된 요청과 응답 패턴은 아래와 같습니다 : 그러나FTP 데이터 연결이 설정되면 인사 또는 핸드 셰이크가 필요합니까?

GREETING: 220 (FTP v1.0) 
REQUEST: USER *** 
RESPONS: 331 Password? 
REQUEST: PASS ******** 
RESPONS: 230 login successfully. 
REQUEST: PWD 
RESPONS: 257 "https://stackoverflow.com/a/" is current directory. 
REQUEST: TYPE I 
RESPONS: 200 Type set to I. 
REQUEST: PASV 
RESPONS: 200 127,255,0,0,175,200(I specify local port 45000) 
REQUEST: LIST 
RESPONS: 150 here is the listing 
RESPONS: 226 Transfer done. 

오류가 Fail to read directroy. 내가 수동 연결이 실제로 내가 소켓 스트림을 얻을 수 있기 때문에 (내가 서버를 구현 설립 생각 다음이 C#에서). 그러나 나는 왜 오류인지 전혀 모른다. 동기화 서버 및 클라이언트에 직접 데이터를 보내는 대신 제어 연결에있는 정보와 같은 일부 악수/인사말 정보를 보내야하기 때문입니까? 그렇다면이 정보의 상태 코드는 무엇입니까?

감사합니다.

답변

0

데이터 연결에 핸드 셰이크가 없습니다.

아마도 '디렉토리를 읽지 못했습니다.'오류는 서버에서 반환하는 폴더 목록 형식이 잘못 되었기 때문에 발생했을 수 있습니다.

+0

아마도, 나는 더미 데이터를 테스트에 사용하고,이 모듈을 수정하고 다시 테스트 할 것입니다. 고맙습니다. –

+0

당신 말이 맞아요. 포맷은 하나의 것이고, 다른 하나는 데이터 전송이 완료된 후 연결을 열린 상태로 두었다는 것입니다. FileZilla가이 정책을 취하는 이유에 대해 궁금한 점이 있습니까? 모든 작업이 단일 스레드에서 완료 될 수 있습니까? 시간이 있으면 src를 확인합니다. –

관련 문제