.NET Framework 1.0이 시작되면 .NET에서 사용할 수있는 FTP 클라이언트 구현이 없으므로 System.Net.Socket을 사용하여 자체 구현을 작성했습니다. 최근에 나는 그것을 약간 변경해야했고, 디버깅하는 동안 연결을 닫을 때 IIS 5.1 FTP 서버에서 출력을 깨고 (WinXP SP 2) 테스트했습니다.IIS 5.1 FTP 서버에서 예기치 않은 바이트 시퀀스가 반환되었습니다.
통신은 다음과 같이 진행한다 :
Send: QUIT<CRLF>
Receive: 221<CRLF><NUL>?<ETX><NUL>
(socket closed)
ftp 명령 채널 처리기 라인 지향 터미네이터로 CRLF를 사용하고, 제 1 CRLF 후 4 바이트를 수신하면,이 타임 아웃의 원인 제 CRLF 기다린다 오류. 전체 시퀀스는 단일 소켓 읽기 작업에서 반환되며 소켓에서 반환 된 바이트 수가 올바른지 확인했습니다.
이 바이트 시퀀스는이 서버와 일관성이 있으며, 이것이 예상되는지/방지 할 수 있는지, 아니면 "MS FTP 서버 단점"목록에 "빠른 수정"을 추가해야하는지 궁금합니다.
IIRC FTP 사이트의 설정에서 QUIT 메시지를 변경할 수 있습니다.이 메타베이스 속성에 잘못된 데이터가 포함되어있을 수 있습니다. – Lucero
종료 메시지를 변경해 보았는데 예상대로 221 메시지가 나타납니다. "221 goodbye? q " –
EventHorizon
FTP 서버 연결이 자연스럽게 떨어지면 시간 초과가 발생합니다. btw : 포트 21로 telnet으로 이것을 재현 할 수 있지만, 그것은 당신 것 (xp sp3)과 다른 쓰레기 값입니다. 좋은 버그. –