Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / FTP. Обработка ошибок соединения / 4 сообщений из 4, страница 1 из 1
24.11.2005, 00:11
    #33395992
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FTP. Обработка ошибок соединения
всем привет,
подскажите плз. как правильно решить задачу.
Имеем ФТП и работаем с ним. Единственное что осталось отладить это обработка ошибок соединения. Т.е. ситуация когда соединение по какой либо причине пропадает.
Я пытался моделировть ситуацию путем выдергивания сетевого кабеля. но программка просто виснет и никаких исключений не вываливается. Вот пример кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
 try  {
			FTPClient ftp= new  FTPClient();
                        ftp.connect(server);
			ftp.login(user, pass);
			ftp.enterLocalPassiveMode();
			ftp.changeWorkingDirectory(dir);
			FTPFile[] files = ftp.listFiles();

			File localFile;
			 for  ( int  i =  0 ; i < files.length ; i++) {
				 if  (files[i].isFile() && files[i].getName().endsWith(".txt")) {
					System.out
							.print(files[i].getName() + "\tобрабатывается\t");

					localFile =  new  File(files[i].getName());
					//скачиваем файл и записываем его в localFile
                                         ftp.retrieveFile(localFile.getName(),
							 new  BufferedOutputStream( new  FileOutputStream(
									localFile)));
					//корректируем содержимое файла
                                        new  TimeParser(localFile);
                                        
                                        //записываем скорректированный файл на сервер
					ftp.storeFile(localFile.getName(),  new  BufferedInputStream(
							 new  FileInputStream(localFile)));

					localFile.delete();
					
					System.out.println("ok.");
				}// end if
			}// end for
			ftp.disconnect();
			System.out.print("Work is done.");
		}  catch  (Exception e) {
			System.err.println("\nConnection error: \n"+e);
		}

Я пытася конечно проверять ftp.isConnected(), но в данном случае это не срабатывает.

спасибо за подсказку
...
Рейтинг: 0 / 0
24.11.2005, 09:58
    #33396319
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FTP. Обработка ошибок соединения
Исключение при разрыве соединения возникает не сразу. У TCP соединений есть определенный таймаут, по истечении которого и возникнет соединение. Вам надо немножко подождать...
...
Рейтинг: 0 / 0
24.11.2005, 10:12
    #33396356
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FTP. Обработка ошибок соединения
Совсем забыл... вы не устанавливаете таймаут для операций с данными. Добавьте setDataTimeout:

Код: plaintext
1.
2.
FTPClient ftp= new  FTPClient();
ftp.setDataTimeout(  [b]60000  ); [/b]// 60 секунд
ftp.connect(server);
...
Рейтинг: 0 / 0
24.11.2005, 20:58
    #33398649
kadet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FTP. Обработка ошибок соединения
спасибо,
поэксперементирую
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / FTP. Обработка ошибок соединения / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]