С одной стороны, работать с сервером FTP очень просто: его легко создать, настроить и запустить. С другой стороны, могут появляться проблемы, которые весьма сложно решить. Например, если вы создали сервер через FileZilla и теперь у клиента написано, что подключиться к серверу невозможно, или любая другая критическая ошибка. К счастью, каждая ошибка имеет какое-либо основание и все они решаемы. Потому в данной статье рассмотрим, почему вам не удается настроить соединение с сервером и получить доступ к списку каталогов через FileZilla, а также основные причины сбоев в FTP протоколе.
Содержание
- Какие самые банальные и безвредные причины появления ошибок
- Ошибка ECONNREFUSED
- Ошибка ENETUNREACH в FileZilla
- Соединение прервано через 20 секунд — в чем причина
Какие самые банальные и безвредные причины появления ошибок
На экране FileZilla может появиться критическая ошибка, когда вы попытаетесь войти в свой клиент на сервере. Казалось, слово «критическая» должно вызывать судороги, напряженность и страх, но такая ошибка необязательно связана со сбоями внутри системы. Возможно, ошибка кроется в том, что вы неправильно пытаетесь подключиться к серверу через FileZilla.
Самая банальная причина — это неправильные логин и пароль, которые вы ввели в форму авторизации. Разумеется, FileZilla не сможет вас подпустить к серверу в таком случае, и вы не сумеете подключиться к хосту для доступа к списку каталогов.
Рекомендуется всегда вводить данные для входа вручную. Если в первый раз при попытке подключиться к серверу все прошло нормально, а теперь установить соединение невозможно, то вполне вероятно, что вы позабыли пароль. Либо вы пытаетесь войти на сервер под стандартным анонимным пользователем, а в логах написано, что такое соединение отклонено. Это вполне логично, если на сервере недоступна функция анонимного входа.
Кроме того, убедитесь в том, что вы пытаетесь войти на правильный хост под корректным номером порта. Порой невозможно подключиться из-за того, что админ в целях безопасности изменил порт. В стандартных настройках указан 21-й порт, но его смело можно менять. После того, как порт изменен, вам необходимо во время авторизации помимо привычных данных также указывать новый номер порта, иначе невозможно будет войти на сервер.
Ошибка ECONNREFUSED
Порой невозможно подключиться к серверу через FileZilla, так как на экране появляется ошибка ECONNREFUSED. Суть этой ошибки в том, что соединение отклонено сервером. Такое пояснение вы найдете в логах программы FileZilla. А причина появления сбоя ECONNREFUSED кроется в том, что пользователь что-то неправильно настроил внутри программы FileZilla. После внесения некорректных настроек подключиться к серверу невозможно, потому как нельзя быть уверенным, что хост поддерживает ваши настройки. Особенно это касается шифрования данных.
После того, как на экране появилась надпись об ошибке со словом ECONNREFUSED, вам следует пройти в настройки соединения. А именно: в раздел «Файл», во вкладку «Менеджер сайтов» и в пункт «Шифрование». Там появится список доступных типов шифрования. Вам нужно выбрать «Использовать обычный FTP». Видимо, по-другому невозможно будет подключиться к хосту, так как он поддерживает заданный тип шифрования данных. Теперь попробуйте подключиться снова.
Ошибка ENETUNREACH в FileZilla
Полный список возможных ошибок не получится написать, но основные все же стоит упомянуть, и к таковым относится ENETUNREACH. Эта ошибка также именуется, как «Сеть недоступна». Разумеется, соединение невозможно получить, если FileZilla даже не может зайти в сеть. Причина неактивности сети и появления ошибки ENETUNREACH может крыться в нескольких факторах. Во-первых, попробуйте войти в Интернет через браузер. Если соединение с глобальной паутиной не удалось получить, то это не критическая ошибка, а лишь проблема проблема с интернет-соединением. В таком случае устранить ошибку ENETUNREACH очень легко — перенастройте Интернет.
С другой стороны, причина неактивности сети может крыться в конфликте приложений. Возможно, клиент FileZilla мешает какой-нибудь другой программе, вот и появляется критическая ошибка в логах. Почему это происходит можно выяснить только у антивируса. Очень часто случается так, что обновленный или только что установленный антивирус вместо того, чтобы приносить пользу, начинает блокировать полезные приложения, после чего они не могут как раньше подключаться к сети. Вполне вероятно, что антивирус автоматически запретил FileZilla что-либо делать в сети. И это правильно, ведь многие другие приложения используют подключение к Интернету в корыстных целях, чтобы добавить рекламу на компьютер.
Чтобы устранить эту ошибку, вам необходимо покопаться в настройках самого антивируса. Ваша задача — внести FileZilla в список доверенных программ, которым можно заходить в Интернет. У каждого антивируса для этого существуют свои разделы меню. Например, в популярном антивирусе Касперскго, чтобы ликвидировать конфликт с FileZilla, нужно зайти в раздел «Исключения и доверенные программы». Вам следует настроить исключение так, чтобы антивирус не проверял деятельность программы. Учтите, что в настройках еще будет пункт «не контролировать сетевой трафик», но выбирать его небезопасно, потому лучше добавьте саму программу в список доверенных.
Соединение прервано через 20 секунд — в чем причина
Магическая цифра «20» однажды может появиться и у вас в логах ошибок. Порой это случается в момент, когда вы ничего не подозревая открываете список каталогов и пытаетесь скачать файл на компьютер. Как вдруг — соединение прервано, а FileZilla пишет про какие-то невнятные 20 секунд. Многих интересует, почему именно 20 секунд и как исправить эту ошибку? И сейчас вы узнаете, как решить эту проблему.
Дело в том, что сбой не обязательно должен быть связан с цифрой 20, упомянутой в логах. Бывает, что клиент еще не успел открыть список каталогов, а в логах уже выскакивает «ошибка 20 секунд», что совсем нелогично. Ведь чтобы соединение было прервано через 20 секунд, оно должно быть сначала установлено. Но дело в том, что эти 20 секунд могли пройти в тот момент, когда вы пытались зайти на сервер. Через 20 секунд, во время которых вы не сумели войти на хост, он выдает вам такое сообщение. В итоге, вы и список каталогов не увидите, и ни один файл не сумеет загрузить.
А причина в том, что есть какие-то неполадки с вашей стороны. Иногда случается так, что с портом вроде все хорошо, но вы не можете по нему подключиться к хосту, так как он запрещен в настройках маршрутизатора. То есть у вас в роутере 21-й порт (это стандартный) или другой, под которым находится сервер, внесен в список запрещенных. Не стоит задаваться вопросом, почему этот порт оказался в таком списке, просто попытайтесь его оттуда убрать. В Интернете хватает инструкций по различным моделям роутеров, так что вы обязательно справитесь.
Но причина не всегда кроется в настройках роутера. Порой ее вообще сложно узнать, потому приходится импровизировать. Попробуйте перезапустить клиент, быть может критическая ошибка подключения к серверу исчезнет. Если этого не произошло, то постепенно углубляйтесь в суть проблему. К примеру, попробуйте переустановить версию клиента на более старую. Ведь разработчики тоже люди, и порой совершают ошибки, за что нельзя их ругать. У многих бывает так, что после установки старой версии FileZilla все вновь работает нормально. Вполне вероятно, что вы не станете исключением и у вас на компьютере все заработает нормально, как было раньше.
С другой стороны, прерванное соединение может быть вызвано банальной причиной — вы просрочили время бездействия. Ведь на каждом сервере есть определенные настройки тайм-аутов, которые не следует игнорировать. Если на хосте указано, что 20 секунд — это максимальный предел бездействия, то приготовьтесь к тому, что через 20 секунд «тишины» сервер выкинет вас из сессии. Тогда придется подключаться заново. Внимательно читайте лог, и тогда наверняка научитесь самостоятельно искать причины неисправностей.
-
19.12.2015, 21:54
#1
Junior Member
Подключение к ftp через FileZilla
Добрый день.
Сервер находится за роутером.
Возникла такая проблема с подключением из внешней сети: не удается подключиться по ftp через FileZilla. При этом подключение из внутренней сети через FileZilla производится. Кроме того подключение из внешней сети через Total Comander, браузер или с помощью инструментов Windows осуществляется.ЛОГ:
Статус: Определение IP-адреса для averlab.ru
Статус: Соединяюсь с xxx.xxx.xxx.xxx:21…
Статус: Соединение установлено, ожидание приглашения…
Статус: Инициализирую TLS…
Статус: Проверка сертификата…
Статус: TLS соединение установлено.
Статус: Соединение установлено
Статус: Получение списка каталогов…
Статус: Сервер отправил пассивный ответ с неопределяемым адресом. Использую существующий адрес сервера.
Команда: MLSD
Ошибка: Соединение передачи данных не может быть установлено: ENETUNREACH — Сеть недоступнаПри этом под root из внешней сети через FileZilla по sftp подключиться удается.
Как можно устранить эту проблему?
-
20.12.2015, 06:15
#2
Senior Member
Пробросить пассивные порты через nat, например 40000:65535 и открыть их на сервере. А вообще если возможно указание в nat отдельной dmz — используйте лучше это, все порты будет проброшены на dmz автоматом.
И причем тут Sftp и ftp? вот если бы вы тестили ftpS тогда другое дело, а тут 2 разных протокола.Последний раз редактировалось Армаэль; 20.12.2015 в 06:18.
Dedicated server Fujitsu-Siemens TX150 S7 | Intel Xeon X3470 | 32GB RAM ECC REG | IBM SAS 15k 300Gbx4 | WD SATA 7.2k 1Tbx4 | Intel Pro 1Gb LAN x2 | Ubuntu Server 18.04 LTS | ISPmanager 5 Lite
-
21.12.2015, 16:38
#3
Junior Member
Почему при текущих настройках через Total Comander удается подключиться по ftp, а по FileZilla — нет.
Проброс портов проблему не решил.
-
21.12.2015, 18:23
#4
ISPsystem team
Проблема явно сетевая. Попробуйте в момент подключения на сервере посмотреть (через ss/netstat) пришел ли от вас (с вашего ip) вообще запрос.
-
28.12.2015, 15:14
#5
Senior Member
Сообщение от averlab
Почему при текущих настройках через Total Comander удается подключиться по ftp, а по FileZilla — нет.
Проброс портов проблему не решил.
Попробуйте в FileZilla забить настройки в Cайт менеджмент и выбрать «Требовать FTP через TLS (явный)».
-
hydrogentsar
- Posts: 29
- Joined: Wed Feb 17, 2016 6:22 am
Соединение передачи данных не может быть установлено: ENETUNREACH — Сеть недоступна
При попытке подключиться по ftp к серверу с установленной VESTA CP filezilla выдает ошибку
Ошибка: Соединение передачи данных не может быть установлено: ENETUNREACH — Сеть недоступна
Ранее все работало как часы, сейчас не могу подключиться
-
skurudo
- VestaCP Team
- Posts: 8099
- Joined: Fri Dec 26, 2014 2:23 pm
- Contact:
Re: Соединение передачи данных не может быть установлено: ENETUNREACH — Сеть недоступна
Post
by skurudo » Tue Feb 21, 2017 9:09 am
Сервис ftp — работает? А если перезапустить?
PS: Проверьте подключение к серверу telnet’ом к примеру.
-
#1
Прошу помощи, Filezilla после обновления до последней версии не соединяется с удаленным FTP сервером, вылезает ошибка :
Код:
Соединение передачи данных не может быть установлено: ENETUNREACH - Сеть недоступна
Подскажите в чем может быть дело?
-
#2
Прошу помощи, Filezilla после обновления до последней версии не соединяется с удаленным FTP сервером, вылезает ошибка :
Код:
Соединение передачи данных не может быть установлено: ENETUNREACH - Сеть недоступна
Подскажите в чем может быть дело?
Может есть повисшие сессии на сервере? Или антивирус, или брандмауэр, или файервол блокирует соединение.
I’m having a problem with creating a socket. The error is as follows
java.net.ConnectException: failed to connect to /192.168.1.103 (port 23): connect failed: ENETUNREACH (Network is unreachable)
Here is part of my code
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = """ + wifiName + """;
wifiConfiguration.preSharedKey = """ + password + """;
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int networkId = wifiManager.addNetwork(wifiConfiguration);
if (networkId != -1)
{
wifiManager.enableNetwork(networkId, true);
new Thread(new GetMacThread()).start();
}
class GetMacThread implements Runnable{
private Socket socket;
private int portNumber = 23;
private String myIP = "192.168.1.103";
@Override
public void run()
{
try {
socket = new Socket(myIP, portNumber);
System.out.println("Socket Thread:"+socket);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
I’m pretty sure that it is not network problem (IP and port are good, I have also added permissions in manifest) because I tested it with connected WIFI network and commented line wifiManager.enableNetwork(networkId, true)
and socket was made properly. Program was working then. So the problem is that, it is working only with previously turned on WiFi.
I also tried first to check wifi connection with ConnectivityManager before creating socket but it changed nothing.
Have you got any ideas why socket fails in this particular order?
I’m having a problem with creating a socket. The error is as follows
java.net.ConnectException: failed to connect to /192.168.1.103 (port 23): connect failed: ENETUNREACH (Network is unreachable)
Here is part of my code
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = """ + wifiName + """;
wifiConfiguration.preSharedKey = """ + password + """;
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int networkId = wifiManager.addNetwork(wifiConfiguration);
if (networkId != -1)
{
wifiManager.enableNetwork(networkId, true);
new Thread(new GetMacThread()).start();
}
class GetMacThread implements Runnable{
private Socket socket;
private int portNumber = 23;
private String myIP = "192.168.1.103";
@Override
public void run()
{
try {
socket = new Socket(myIP, portNumber);
System.out.println("Socket Thread:"+socket);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
I’m pretty sure that it is not network problem (IP and port are good, I have also added permissions in manifest) because I tested it with connected WIFI network and commented line wifiManager.enableNetwork(networkId, true)
and socket was made properly. Program was working then. So the problem is that, it is working only with previously turned on WiFi.
I also tried first to check wifi connection with ConnectivityManager before creating socket but it changed nothing.
Have you got any ideas why socket fails in this particular order?
#1
RunStyle
RunStyle
-
- Пользователь
-
- 1 сообщений
Новичок
Отправлено 10 Июнь 2016 — 13:38
При подключении через FileZilla выдает ошибку:
Ошибка: Соединение передачи данных не может быть установлено: ENETUNREACH — Сеть недоступна
Ошибка: Соединение прервано после 20 секунд неактивности
Ошибка: Не удалось получить список каталогов
- Наверх
#2
w1ck3d
w1ck3d
-
- Пользователь
-
- 890 сообщений
Постоянный пользователь
Отправлено 10 Июнь 2016 — 14:24
У вас проблемы с интернетом видимо, перезапустите соединение
- Наверх
Материал из Wiki — Iphoster — the best ever hosting and support. 2005 — 2023
Перейти к:навигация, поиск
FileZilla — Ошибка: Соединение передачи данных не может быть установлено: ENETUNREACH — Сеть недоступна — решение
Ошибка в FileZilla при подключении:
Ошибка: Соединение передачи данных не может быть установлено: ENETUNREACH - Сеть недоступна
Решение — это отключить антивирус на компьютере (в нашем случае это был Kaspersky)
Источник — https://wiki.iphoster.net/index.php?title=FileZilla_-_Ошибка:_Соединение_передачи_данных_не_может_быть_установлено:_ENETUNREACH_-_Сеть_недоступна_-_решение&oldid=4304
Столкнулся с ошибкой в FileZilla 3.13.1 при подключении к FTP серверу в Windows 7:
При отключении защиты антивируса все начинает работать нормально. На компьютерах установлен Kaspersky Endpoint Protection 10 и проблема несовместимости свежих версий FileZilla и касперского известна. Чтобы решить проблему нужно либо отключить сканирование 21 порта в настройках политики антивируса, либо добавить бинарник filezilla в Trusted applications и запретить сканирование сетевой активности для этого приложения.
Я решил проблему через добавление в trusted applications:
Забавно, что версия FileZilla 3.9.0.1 работает нормально и без изменения политики.
I’m having a weird error on my android application. I’m testing with a local server using Xampp. The App is to retrieve records from a Database and store them in the phone.
The thing is I have tested the app in a Motorola XT550 with Android 2.3.6 and in my Sony Xperia S with Android 4.0.4 and the app works just fine. But when I test it with a Samsung Fame with Android 4.1.2 (my client’s phone) it doesn’t work.
Here is the LogCat:
02-22 04:48:33.001 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
02-22 04:48:33.001 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
02-22 04:48:33.001 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:670)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at com.sistel.manantiales.SyncActivity$DatabaseSync.updateDatabase(SyncActivity.java:198)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at com.sistel.manantiales.SyncActivity$DatabaseSync.doInBackground(SyncActivity.java:165)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at com.sistel.manantiales.SyncActivity$DatabaseSync.doInBackground(SyncActivity.java:147)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-22 04:48:33.011 3961-3976/com.sistel.manantiales W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-22 04:48:33.021 3961-3976/com.sistel.manantiales W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-22 04:48:33.021 3961-3976/com.sistel.manantiales W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-22 04:48:33.021 3961-3976/com.sistel.manantiales W/System.err﹕ at java.lang.Thread.run(Thread.java:856)
02-22 04:48:33.021 3961-3976/com.sistel.manantiales W/System.err﹕ Caused by: java.net.ConnectException: failed to connect to /10.0.0.7 (port 80) after 15000ms: connect failed: ENETUNREACH (Network is unreachable)
02-22 04:48:33.021 3961-3976/com.sistel.manantiales W/System.err﹕ at libcore.io.IoBridge.connect(IoBridge.java:114)
02-22 04:48:33.031 3961-3976/com.sistel.manantiales W/System.err﹕ at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
02-22 04:48:33.031 3961-3976/com.sistel.manantiales W/System.err﹕ at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
02-22 04:48:33.031 3961-3976/com.sistel.manantiales W/System.err﹕ at java.net.Socket.connect(Socket.java:842)
02-22 04:48:33.031 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
02-22 04:48:33.031 3961-3976/com.sistel.manantiales W/System.err﹕ at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
02-22 04:48:33.031 3961-3976/com.sistel.manantiales W/System.err﹕ ... 15 more
02-22 04:48:33.041 3961-3976/com.sistel.manantiales W/System.err﹕ Caused by: libcore.io.ErrnoException: connect failed: ENETUNREACH (Network is unreachable)
02-22 04:48:33.081 1216-1467/? V/AudioFlinger﹕ presentationComplete() session 35 complete: framesWritten 940032
02-22 04:48:33.081 1216-1467/? V/AudioFlinger﹕ TrackBase::reset
02-22 04:48:33.091 3961-3976/com.sistel.manantiales W/System.err﹕ at libcore.io.Posix.connect(Native Method)
02-22 04:48:33.091 3961-3964/com.sistel.manantiales D/dalvikvm﹕ GC_CONCURRENT freed 197K, 13% free 7645K/8775K, paused 16ms+16ms, total 54ms
02-22 04:48:33.091 3961-3976/com.sistel.manantiales W/System.err﹕ at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
02-22 04:48:33.091 3961-3976/com.sistel.manantiales W/System.err﹕ at libcore.io.IoBridge.connectErrno(IoBridge.java:144)
02-22 04:48:33.101 3961-3976/com.sistel.manantiales W/System.err﹕ at libcore.io.IoBridge.connect(IoBridge.java:112)
02-22 04:48:33.101 3961-3976/com.sistel.manantiales W/System.err﹕ ... 20 more
02-22 04:48:33.101 1577-1800/? D/PowerManagerService﹕ acquireDVFSLockLocked : type : DVFS_MIN_LIMIT frequency : 999999 uid : 1000 pid : 1577 tag : ActivityManager
02-22 04:48:33.101 1577-1800/? W/ActivityManager﹕ mDVFSLock.acquire()
02-22 04:48:33.141 1577-1800/? D/BatteryStatsImpl﹕ ++++++xy WakeLock start : pid=1577, name=, type=0, tid=1800, pid=1577, pName=null
02-22 04:48:33.161 1577-1588/? D/WindowManager﹕ PhoneWindowManager: focusChangedLw
02-22 04:48:33.161 1577-1588/? D/WindowManager﹕ updateReadingMode
02-22 04:48:33.161 1577-1588/? D/KeyguardViewMediator﹕ setHidden false
02-22 04:48:33.161 1577-1588/? D/WindowManager﹕ mInputFocus is not null.
02-22 04:48:33.161 1577-1588/? D/WindowManager﹕ mInputFocus is not null.
02-22 04:48:33.161 1577-1588/? D/WindowManager﹕ mInputFocus is not null.
02-22 04:48:33.191 3961-3961/com.sistel.manantiales D/AbsListView﹕ Get MotionRecognitionManager
02-22 04:48:33.211 3961-3976/com.sistel.manantiales W/dalvikvm﹕ threadid=11: thread exiting with uncaught exception (group=0x411ba2a0)
02-22 04:48:33.211 1577-1810/? D/WindowManager﹕ mInputFocus is not null.
02-22 04:48:33.211 3961-3976/com.sistel.manantiales E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.IllegalArgumentException: HTTP entity may not be null
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:110)
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:146)
at com.sistel.manantiales.SyncActivity$DatabaseSync.updateDatabase(SyncActivity.java:217)
at com.sistel.manantiales.SyncActivity$DatabaseSync.doInBackground(SyncActivity.java:165)
at com.sistel.manantiales.SyncActivity$DatabaseSync.doInBackground(SyncActivity.java:147)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
And Here is my code:
public class DatabaseSync extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... url) {
try {
clientDataSource.open();
} catch (SQLException e) {
e.printStackTrace();
}
try {
movementDataSource.open();
} catch (SQLException e) {
e.printStackTrace();
}
clientDataSource.deleteAllClients();
updateDatabase(url[0]);
return null;
}
@Override
protected void onPostExecute(Boolean bool) {
super.onPostExecute(bool);
}
public void updateDatabase(String url) {
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("Operation", "Download"));
nameValuePairs.add(new BasicNameValuePair("Value", "Download"));
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 15000);
HttpConnectionParams.setSoTimeout(httpParams, 15000);
HttpClient httpClient = new DefaultHttpClient(httpParams);
HttpPost httpPost = new HttpPost(url);
try {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpResponse httpResponse = null;
try {
httpResponse = httpClient.execute(httpPost);
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity httpEntity = null;
try {
httpEntity = httpResponse.getEntity();
}catch (NullPointerException e) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
String result = "empty";
try {
result = EntityUtils.toString(httpEntity);
} catch (IOException e) {
e.printStackTrace();
}
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(result);
} catch (JSONException e) {
e.printStackTrace();
}
JSONArray jsonClients = null;
try {
jsonClients = jsonObject.getJSONArray("clients");
} catch (JSONException e) {
e.printStackTrace();
}
long id = 0;
String name;
String address;
String locality;
long bonus = 0;
double price = 0.0;
double prev_balance = 0.0;
double balance = 0.0;
long prev_bottles = 0;
long bottles = 0;
String update_date;
String sync_date;
for(int i = 0; i < jsonClients.length(); i++) {
JSONObject json = null;
try {
json = jsonClients.getJSONObject(i);
String s_id = new String(Base64.decode(json.get("id").toString(),Base64.DEFAULT));
name = new String(Base64.decode(json.get("name").toString(),Base64.DEFAULT));
address = new String(Base64.decode(json.get("address").toString(), Base64.DEFAULT));
locality = new String(Base64.decode(json.get("locality").toString(), Base64.DEFAULT));
String s_bonus = new String(Base64.decode(json.get("bonus").toString(), Base64.DEFAULT));
String s_price = new String(Base64.decode(json.get("price").toString(), Base64.DEFAULT));
String s_prev_balance = new String(Base64.decode(json.get("prev_balance").toString(), Base64.DEFAULT));
String s_balance = new String(Base64.decode(json.get("balance").toString(), Base64.DEFAULT));
String s_prev_bottles = new String(Base64.decode(json.get("prev_bottles").toString(), Base64.DEFAULT));
String s_bottles = new String(Base64.decode(json.get("bottles").toString(), Base64.DEFAULT));
update_date = new String(Base64.decode(json.get("update_date").toString(), Base64.DEFAULT));
sync_date = new String(Base64.decode(json.get("sync_date").toString(), Base64.DEFAULT));
id = Long.parseLong(s_id);
bonus = Long.parseLong(s_bonus);
price = Double.parseDouble(s_price);
prev_balance = Double.parseDouble(s_prev_balance);
balance = Double.parseDouble(s_balance);
prev_bottles = Long.parseLong(s_prev_bottles);
bottles = Long.parseLong(s_bottles);
Client client = new Client(id, name, address, locality, bonus, price,
prev_balance, balance, prev_bottles, bottles, update_date, sync_date);
clientDataSource.insertClient(client);
} catch (JSONException e) {
e.printStackTrace();
}
}
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
}
Aug 12
FileZilla is an excellent bit of software that I’ve been using (and recommending) for many years. Today, that changed.
The Problem: ENETUNREACH – Network unreachable
A few months ago at the web host I work for, we started seeing problems with folks who were using FileZilla. Being on a slow network connection at the time, I’d neglected to upgrade my FileZilla installation from 3.10.x to the current 3.12.x. I could never duplicate the problem, and I figured it was likely a bug in the newer version of FileZilla.
Today I needed to do a task that required FTP on an older server, and when I fired up FileZilla, it nagged me to upgrade. Being on a fast connection now, I upgraded. I immediately regretted this. Instead of being greeted with an FTP session, I tried to log in and got:
Error: The data connection could not be established: ENETUNREACH - Network unreachable
Error: Connection timed out after 20 seconds of inactivity Error: Failed to retrieve directory listing
Wait- what? So I tested it from the command line. It worked. Could it be that the update is broken this badly? A quick Google search for “Error: The data connection could not be established: ENETUNREACH” (with quotes) brought me to This Thread on FileZilla’s forum.
As I read through it, I recognized that the folks posting there were having the same problem I did. Rolling back to an earlier version of the program worked, but the latest installation version did not, and it produced “Error: The data connection could not be established: ENETUNREACH – Network unreachable”.
It Gets Worse
I’m not normally a judgmental person regarding software and developers, but “botg” (the creator of FileZilla and curator of the forum) was nothing but rude and downright combative about the problem. It seems he’s more interested in blaming firewall software than in making his software work properly. Perhaps he’s right- I’m not an FTP expert, and he apparently is. He does have some good points about Kaspersky’s Firewall (which I have disabled). But that does not make his approach to the problem a correct one. Clearly he doesn’t intend to fix it.
The Easy Fix
I’ve switched to WinSCP, and it worked immediately and even imported my FileZilla connection data which was quite handy. Perhaps you’ll want to do the same. Hopefully the FileZilla Devs will get their head on straight and manage to work around the problem like everyone else has. It’s a shame to see a good project go sideways like this.