Всем привет. Может кто из Вас подскажет. Начал писать ftp сервер под windows. Пока на шарпе, как прототип. Потом перепишу на С++. Застрял на команде SIZE. Вот лог: Код (Text): (4:02:44) >> USER anonymous (4:02:44) << 331 Please specify the password (4:02:44) >> PASS e-mail (4:02:44) << 230 Login successful. Have fun. (4:02:44) >> SYST (4:02:44) << 210 Windows 7 x64 (4:02:44) >> PWD (4:02:44) << 257 "/" is working directory. (4:02:44) >> TYPE I (4:02:44) << 200 Type set to I (4:02:44) >> EPSV (4:02:46) << 540 Command not supported! (4:02:46) >> PASV (4:02:46) << 227 Entering Passive Mode (127, 0, 0, 1, 7, 208) (4:02:46) >> SIZE / (4:02:47) << 540 Command not supported! (4:02:47) >> QUIT (4:02:47) << 221 Goodbye. Как я вычитал в гугле, команда SIZE должна быть с последующим именем файла, размер которого и нужно отправить в ответ. А тут непонятно. Размер сервера что-ли спрашивает. Или текущей директории. Все это при попытке подключиться к ftp через google chrome. Проводник такой команды не отправляет. Скачал Titan Ftp Server, чтоб посмотреть пример по логам. Вот что он сказал: Код (Text): COMMAND: USER anonymous RESPONSE: 331 User name okay, need password. COMMAND: PASS RESPONSE: 230-Welcome anonymous from 192.168.0.172. You are now logged in to the server.230 User logged in, proceed. COMMAND: SYST RESPONSE: 215 UNIX Type: L8 COMMAND: PWD RESPONSE: 257 "/" is current directory. COMMAND: TYPE I RESPONSE: 200 Type set to I. COMMAND: EPSV RESPONSE: 229 Entering Extended Passive Mode (|||62506|) COMMAND: SIZE / Insufficient rights to "D:\ServerName\"; returning 550 RESPONSE: 550 Requested action not taken, file not found or no access. COMMAND: CWD / RESPONSE: 250 Directory changed to "/" COMMAND: MLSD RESPONSE: 150 File status okay; about to open data connection. Success. FindFirstFile returned 0x008c8328. GetLastError = Область данных, переданная по системному вызову, слишком мала. RESPONSE: 226 Closing data connection. Transferred 149 bytes. COMMAND: QUIT RESPONSE: 221 Session Ended. Downloaded 0KB, Uploaded 0KB. Goodbye anonymous from 192.168.0.172. Closed connection from IP address: 192.168.0.172, port: 62505 При этом в google chrome не отображается ни одного файла. Выходит Титан такой команды тоже не знает...
берешь wireshark, конектишься на рабочий фтп, и смотришь что отправляется в ответ, сравниваешь с тем что отправляешь ты, делаешь выводы=)
Так и сделал. Лог обращения google chrome к серверу ftp://212.46.12.210/ Код (Text): >> USER anonymous << 331 Password required for anonymous. >> PASS chrome@example.com << 230-======================================================== >> SYST << 215 KsineD FTP se server v.2.0.33 >> PWD << 257 "/" is current directory. >> TYPE I << 200 Type set to I. >> EPSV << 229 Entering Extended Passive Mode (|||12007|) >> SIZE / << 550 No such file. >> CWD / << 250 CWD command successful. "/" is current directory. >> MLSD << 150 Data connection accepted from 77.239.162.91:30443; transfer starting. При этом файлы в браузере отобразились. Сделал изменения в своем проекте, заработало. Выходит если ответить Код (Text): 540 Command not supported! Ошибка - команда не определена То он отказывается работать со мной. А если ответить Код (Text): 550 No such file. Ошибка - команда относится к файловой системе Он продолжает работать. Странно. Хотя что он подразумевал под этой командой так и не понятно. Ну да ладно, работает. Спасибо за помощь.