|
19.08.2008, 17:32
|
#1
|
AnyKey`щик
Регистрация: 11.12.2006
Сообщений: 17
Написано 2 полезных сообщений (для 3 пользователей)
|
Lib_FTP
Работа с FTP сервером в пассивном режиме.
Пока позволяет залогиниться и отослать файл из строки.
В планах - отправка и прием из ФС. Следите за обновлениями ))
Сюда же прикрепляю пример захвата кадра с камеры, сжатие его в JPEG и отправку его же на ФТП сервер. Кто то тоже очень интересовался этой темой ))
Протестировано на мотороле V3X и эмуляторе WTK2.5, все замечательно работает ))
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо aleshka за это полезное сообщение:
|
|
28.09.2008, 19:05
|
#2
|
Оператор ЭВМ
Регистрация: 04.09.2008
Сообщений: 39
Написано 4 полезных сообщений (для 5 пользователей)
|
Lib_FTP
Ну и где обещанные обновления? Мне бы такая либа очень пригодилась.
|
(Offline)
|
|
23.10.2008, 22:05
|
#3
|
AnyKey`щик
Регистрация: 22.10.2008
Сообщений: 7
Написано одно полезное сообщение (для 2 участников)
|
Ответ: Lib_FTP
скорость не очень блин
|
(Offline)
|
|
02.01.2009, 17:22
|
#4
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: Lib_FTP
несколько переделанная и оптимизированная версия от arT (c). [email protected]
добавлена функция получения лога обмена,
исправлена ошибка протокола передачи, теперь нормально работает с ftp.narod.ru
import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
import javax.microedition.io.StreamConnection;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.String;
class Lib_ftp {
private static SocketConnection c;
private static InputStream i;
private static OutputStream o;
private static String answer = "";
private static String flog = "";
public static int socketopen(String url) {
// открыть socket соединение
try{
c = (SocketConnection) Connector.open(url);
i = c.openInputStream();
o = c.openOutputStream();
return 0;
}catch(Exception ex) {return -1;}
}
public static void socketclose() {
// закрыть socket соединение
try{
if(i != null) {i.close(); i=null;}
if(o != null) {o.flush(); o.close(); o=null;}
c.close();
}catch(Exception ex) {}
c=null;
}
public static int socketavailable() {
// возвращает количество байт в буфере приема
try{
if(i != null) return i.available();
} catch(Exception ex) {}
return 0;
}
public static int rbyte() {
// чтение байта из входного потока
try{
return i.read();
}catch(Exception ex) {return -1;}
}
public static String rstr() {
// чтение строки байтов из входного потока
StringBuffer buf = new StringBuffer();
if(i != null) try{while (i.available() == 0);} catch(Exception ex) {}
if(i != null) try{while (i.available() != 0) buf.append((char)i.read());} catch(Exception ex) {return "";}
flog=flog+"<<"+buf.toString();
return buf.toString();
}
public static int wstr(String s) {
// запись строки в выходной поток
try{
byte[] b = s.getBytes();
o.write(b);
o.flush();
flog=flog+">>"+s;
return 0;
}catch(Exception ex) {return -1;}
}
///////////////////////////////////////////////////////////////
private static boolean check(String s,String ok,String msg) {
// проверяем код который вернул сервер.
answer = msg+": "+s;
if (s == null || !s.trim().startsWith(ok)) return false;
return true;
}
public static String ftplog() {
// отдать накопившийся лог
String s = flog;
flog="";
return s;
}
public static String ftpopen(String hostport, String login, String pass) {
// установить FTP-соединение
flog = "";
if (socketopen("socket://"+hostport) != 0) {flog="Error FTP connection: "+hostport; return flog;}
if (!check(rstr(), "220", "server not answer")) return answer;
wstr("USER " + login + (char)13 + (char)10);
if (!check(rstr(), "331", "user-login")) return answer;
wstr("PASS " + pass + (char)13 + (char)10);
if (!check(rstr(), "230", "password")) return answer;
return "OK";
}
public static void ftpclose() {
// закрыть FTP-соединение
wstr("QUIT" + (char)13 + (char)10);
socketclose();
}
public static String ftpsendstr(String fileName, String data) {
// передать файл на FTP
SocketConnection dataSocket = null;
OutputStream dataStream = null;
String[] params = {"","","","","",""};
String url = "";
wstr("REST 0"+ (char)13 + (char)10);
if (!check(rstr(), "350", "REST")) return answer;
wstr("TYPE I" + (char)13 + (char)10);
if (!check(rstr(), "200", "TYPE I")) return answer;
wstr("PASV" + (char)13 + (char)10);
if (!check(url= rstr(), "227", "PASV")) return answer;
int n = 0;
int endparams=url.indexOf(")");
for (int i=url.indexOf("(")+1; i<endparams; i++) {
if (url.charAt(i) != (char)44) {params[n] = params[n]+url.charAt(i);}
else {n++;}
}
url="socket://"+params[0]+"."+params[1]+"."+params[2]+"."+params[3]+":"+Integer.toString(256*Integer.parseInt(params[4]) + Integer.parseInt(params[5]));
flog=flog+"CONNECTING TO: "+url+(char)13 + (char)10;
try{
dataSocket = (SocketConnection) Connector.open(url);
dataStream = dataSocket.openOutputStream();
}catch(Exception ex) {}
wstr("STOR " + fileName + (char)13 + (char)10);
if (!check(rstr(), "125", "STOR")) return answer; //"150"
try{
byte[] b = data.getBytes();
dataStream.write(b);
dataStream.flush();
}catch(Exception ex) {}
try{
dataSocket.close();
dataSocket = null;
dataStream.close();
dataStream = null;
}catch(Exception ex) {}
if (!check(rstr(), "226", "file transfer")) return answer;
return "OK";
}
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.04.2009, 13:40
|
#5
|
Нуждающийся
Регистрация: 16.11.2006
Сообщений: 56
Написано 9 полезных сообщений (для 29 пользователей)
|
Ответ: Lib_FTP
А у меня при попытке создать файл на ФТП выдает ошибку 501. Коннект проходит нормально
|
(Offline)
|
|
22.04.2009, 19:18
|
#6
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Lib_FTP
Из RFC 959:
501 Syntax error in parameters or arguments.
Похое, неправильно заданы параметры для комманды создания файла.
|
(Offline)
|
|
22.04.2009, 21:52
|
#7
|
Нуждающийся
Регистрация: 16.11.2006
Сообщений: 56
Написано 9 полезных сообщений (для 29 пользователей)
|
Ответ: Lib_FTP
Сообщение от ViNT
Из RFC 959:
501 Syntax error in parameters or arguments.
Похое, неправильно заданы параметры для комманды создания файла.
|
Это я в курсе.
Да я пытаюсь запустить пример, который идет в нагрузку. Перепробовал 3 ФТПшника.
|
(Offline)
|
|
12.05.2009, 12:45
|
#8
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: Lib_FTP
подсмотрел как сделана работа с FTP-серверами в программке "Moto FTP" jenfa (c).
Вот декомпиленный класс для работы с FTP в пассивном режиме.
|
(Offline)
|
|
04.01.2010, 15:11
|
#9
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Lib_FTP
у кого-нибудь получилось разобраться с либой?
у меня всегда 501((( и когда создаем файл, и когда в уже существующий писать пытаемся...
|
(Offline)
|
|
19.01.2010, 11:06
|
#10
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: Lib_FTP
Сообщение от cherepets
у меня всегда 501
|
откомпиль правленный исходник, сообщение №4 от 02.01.2009, 16:22
|
(Offline)
|
|
19.01.2010, 11:14
|
#11
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Lib_FTP
я б откомпилил, ток у меня ява не ставится, все пакеты требуют какой-то еще пакет, а в репозитарии его нет(((
|
(Offline)
|
|
20.01.2010, 06:42
|
#12
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Ответ: Lib_FTP
cherepets, держи свежеиспеченный Lib_ftp из 4го поста (от 02.01.2009, 15:22)...
__________________
Уважай собеседника, а лучше подари ему +
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.01.2010, 13:26
|
#13
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Lib_FTP
о, пасиб)))
правда я уже без него обошелся, но все же фтп никогда не помешает)))
|
(Offline)
|
|
24.01.2010, 23:28
|
#14
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Ответ: Lib_FTP
пожалуйста)))... ешь без хлеба
__________________
Уважай собеседника, а лучше подари ему +
|
(Offline)
|
|
23.07.2010, 09:59
|
#15
|
AnyKey`щик
Регистрация: 08.02.2010
Сообщений: 6
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Lib_FTP
к FTP подключается, файл создаётся но строка в него не записывается, файл пустой Сервер возвращает 150
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:41.
|