|
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 9
|
|
Проблема с FTP серваком самописным03.03.2010, 04:22. Показов 1025. Ответов 2
Метки нет (Все метки)
Привет всем. Недавно пришлось писать ФТП сервак причем на Java так, как С билдер я не изучал. В общем сервак я написал, правда есть проблема - он работает только со встроенным FTP клиентом виндовозины...., а FAR или Internet Explorer ни в какую не хотят нормально работать с ним. Проблема в следующем - Far'овский клиент почему-то не отображает содержимое папки (при чем такое подозрение, что он вообще не врубается что есть родительская папка). Были подозрения , что я неправильно отсылаю ответ на запрос pwd, но на мой взгляд и исходя из прочитанного RFC этот ответ никакого реального смысла собой не несет. А инет эксплорере там вообще жуть творится: он пытается воспринять все что есть родовой папке как директории и пытается в них залезть , отсылая cwd на сервак. Он этот запрос отпинывает в итоге выдает содержимое папки - несколько объектов с именами файлов, но со свойствами папок.... smile.gif)))
Кто знает в чем может быть беда??? И еще вопросик для тех кто занимался программингом на Java для локалки: подскажите как получить список машин в сети и опросить зашаренные ресурсы? Просмотрев аналогичные вопросы для С , я понял что тут нужен другой подход... Заранее спасибо. Вот код сервака. [code] package FTP_server; import java.io.*; import java.net.*; import java.lang.*; import java.util.*; public class FTPserver { private static final int SERVER_PORT=21; private static final int MAX_CLIENTS=50; private ServerSocket listenSocket=null; private boolean keepRunning=true; public static void main(String[] args) { if (args.length<1){ System.out.println('Usage: Type in path to the Directory you wish to make shared. example: c:/mydir/'); System.exit(1);} FTPserver server = new FTPserver(args); server.serveFiles(); } public FTPserver(String [] args) { try{ ReceiveCommands.defDir = args[0]; listenSocket = new ServerSocket(SERVER_PORT); serveFiles(); } catch(IOException except){ System.err.println('Unable to listen to port' + SERVER_PORT + ': ' + except); System.exit(1); } } public void serveFiles(){ Socket clientSocket=null; try{ while(keepRunning) { clientSocket = listenSocket.accept(); FTPHandler newFTPHandler = new FTPHandler(clientSocket); Thread newFTPThread = new Thread(newFTPHandler); newFTPThread.start();} listenSocket.close(); } catch(IOException expt){ } } protected void finalize() { if(keepRunning) keepRunning=false; } } class FTPHandler extends Thread implements Runnable { private Socket clientSocket = null; private PrintStream clientSend = null; private DataInputStream clientReceive = null; private static final int TIMEOUT = 600000; public FTPHandler(Socket newSocket){ clientSocket=newSocket; } public void run(){ try { clientSend = new PrintStream(clientSocket.getOutputStream ()); clientReceive = new DataInputStream(clientSocket.getInputStr eam()); clientSend.println('220 '); clientSend.flush(); ReceiveCommands receiveCommands = new ReceiveCommands(clientSocket); Thread newreceiveThread = new Thread(receiveCommands); long endwait = System.currentTimeMillis() + TIMEOUT; receiveCommands.start(); do { yield(); if (System.currentTimeMillis() > endwait){ receiveCommands.stop(); clientSocket.close(); yield(); break; } r); if(FTPFile.mkdirs()){ theOutput = '230 MKD command complete';} else{ theOutput = '500 Create directory error'; } } if (theCommand.equalsIgnoreCase('XRMD') || theCommand.equalsIgnoreCase('RMD')& (state == LOGGED)){ String delDir = currDir + stInput.nextToken(); FTPFile = new File(delDir); if(FTPFile.delete()){ theOutput = '231 RMD command complete';} else{ theOutput = '500 Delete directory error'; } } if (theCommand.equalsIgnoreCase('RETR')& (state == GETPORT)){ getFile(out, stInput); } if (theCommand.equalsIgnoreCase('STOR')& (state == GETPORT)){ postFile(out, stInput); } if (theCommand.equalsIgnoreCase('QUIT')) theOutput='QUIT';} System.out.println(theOutput); out.println(theOutput); out.flush(); if (theOutput.equals('QUIT')) break; } out.close(); in.close(); socket.close(); } catch (IOException e) { System.out.println('Unknown error'); e.printStackTrace(); } yield(); } void getUserPort(StringTokenizer strInput){ StringTokenizer stInput = strInput; StringTokenizer stPORT = new StringTokenizer(stInput.nextToken(),',') ; ClientIP = stPORT.nextToken()+'.'+stPORT.nextToken( )+'.'+ stPORT.nextToken()+'.'+stPORT.nextToken( ); System.out.print('Расшифровка команды PORT: IP adress '+ClientIP+' port '); Port = UpByte.parseInt(stPORT.nextToken())*256+ LowByte.parseInt(stPORT.nextToken()); System.out.println(Port); state = GETPORT; theOutput='227 Entering Passive Mode'; } void getList(PrintStream newout, StringTokenizer strInput){ state = LOGGED; PrintStream out = newout; StringTokenizer stInput = strInput; try { Dir = currDir; if (stInput.hasMoreTokens()){ Dir = currDir + stInput.nextToken();} FTPFile = new File(Dir); if (FTPFile.exists()){ Socket newSock = new Socket(ClientIP,Port); PrintStream newOut = new PrintStream( new BufferedOutputStream(newSock.getOutputSt ream(), 1024), false); String FileList[] = FTPFile.list(); theOutput='110 LIST command starting '; out.println(theOutput); out.flush(); System.out.println('110 LIST command starting '); System.out.println('Transfer file list to client'); for (int i=0; i<FileList.length; i++){ newOut.println(FileList[i]); newOut.flush(); } newOut.close(); newSock.close(); theOutput='210 LIST command complete'; } else{ theOutput='510 LIST command error';} } catch (IOException e){ theOutput='510 LIST command error';} } void getFile(PrintStream newout, StringTokenizer strInput){ state = LOGGED; PrintStream out = newout; StringTokenizer stInput = strInput; try { Dir = currDir + stInput.nextToken(); DataInputStream InStream; InStream = new DataInputStream(
0
|
|
| 03.03.2010, 04:22 | |
|
Ответы с готовыми решениями:
2
Как сделать генерацию ошибки 404 серваком? Проблема с FTP Проблема с FTP |
|
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 9
|
|
| 04.03.2010, 01:30 [ТС] | |
|
Народ ну че всем впадлу ответить? Или на самом деле никто не знает?
Будьте так добры чирканите пару строк!!!
0
|
|
|
1 / 1 / 3
Регистрация: 03.08.2008
Сообщений: 390
|
|
| 23.03.2010, 17:52 | |
|
Поюзаю твой сервак и потом ...чирикну... :-))))
0
|
|
| 23.03.2010, 17:52 | |
|
Помогаю со студенческими работами здесь
3
Узнать имеет ли пользователь доступ к базе на скрипте под серваком. Где баг с самописным таймером?
Изменение значения поля самописным атрибутом
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|