Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FTP через SIM300
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Страницы: 1, 2
Виталий Якименко
Пытаюсь записать файл на сервер по FTP. Соединяюсь с сервером (порт 21), все получается, команды обрабатываются. Но как создать data connection, не разорвав control connection?
SIM300 не дает создать более одного TCP connection... Может, кто пробовал? Или знает где почитать?
alexQ
стэк у симкомов урезанный односокетный.

если пользуете внешний мк, тогда поднимайте свой стэк на нем и используйте голый гпрс.
только это тянет за собой нормальную ось и прочие радости ...
Виталий Якименко
а как быть с командой AT+CIPCCON ?
Там написано:
Note that there may exist two connections at one time: one connection is as
client connecting with remote server, the other connection is as server

Нельзя ли это использовать как-то для FTP ?

Или, каким-то образом "временно" разорвать Control connection, и установить Data connection?
Виталий Якименко
Получилось !!! beer.gif

Могу читать и писать файлы по FTP !

Кому интересно, могу поделиться опытом.
Только не сегодня уже beer.gif beer.gif beer.gif

Есть и вопросы, хотелось бы обсудить.
YAM
Какая скорость передачи данных у Вас получилась на больших файлах?
Виталий Якименко
Большие не пробовал. Важно, что получилось в принципе. Попробую - напишу.
Konstantin_18
Цитата(Виталий Якименко @ Jul 20 2007, 21:57) *
Получилось !!! beer.gif

Могу читать и писать файлы по FTP !

Кому интересно, могу поделиться опытом.



Поделитесь плз.
YWAS
ув. Виталий Якименко - а на счет поделиться опытом

буду весьма признателен
Виталий Якименко
Вот как раз этим сейчас и занимаюсь - пишу файлик. Потерпите немного smile.gif
Виталий Якименко
Расписал все что знаю на данный момент. Если у кого есть больший опыт - поделитесь.
alexey123
Цитата(Виталий Якименко @ Jul 22 2007, 20:13) *
Расписал все что знаю на данный момент. Если у кого есть больший опыт - поделитесь.


В свое время пробовал использовать GPRS и FTP для перекачки файлов. Впечатления остались не самые лучшие. Если с небольшими файлами (< 300k) дело еще как-то обстоит,
то c большими размерами приходилось совсем туго. Постоянные переповторы, потери блоков...
Пробовал менять клиенты и серверА - без результата.

Если с тех пор (3 года назад, Мегафон-Самара) качество GPRS-связи не улучшилось - ваш клиент потребует серьезных доработок, тестирований и исследований.

Хотя, оригинальности - не отнять smile.gif
Виталий Якименко
Да, для больших файлов, конечно, будут проблемы. Зато, если небольшими порциями - например, результаты измерений - дописывать в файл - очень удобно. В одном TCP пакете можно передавать до 1 кБ - часто вполне достаточно
alexey123
Цитата(Виталий Якименко @ Jul 23 2007, 18:05) *
Да, для больших файлов, конечно, будут проблемы. Зато, если небольшими порциями - например, результаты измерений - дописывать в файл - очень удобно. В одном TCP пакете можно передавать до 1 кБ - часто вполне достаточно



IMHO ради 1кБ использовать FTP расточительно.

Я бы смотрел в сторону HTTP-POST.
На порядок быстрее и проще в реализации.
Минус один: наличие web-сервера на удаленном хосте.
Виталий Якименко
А если надо 1 кБ двоичных данных каждые 8 секунд, и дописывать в один и тот же файл в течение некоторого времени? По-моему, FTP как раз не расточительный - один раз установил соединение, а потом только данные передавай, практически никакого дополнительного трафика.
Если считаете, что HTTP-POST эффективнее - подскажите, как сделать. WEB-сервер на хосте как раз есть.
alexey123
Цитата(Виталий Якименко @ Jul 24 2007, 11:22) *
Если считаете, что HTTP-POST эффективнее - подскажите, как сделать. WEB-сервер на хосте как раз есть.


POST - немного другая технология. В HTTP есть два основных метода - Get и Post. Тыкая по ссылкам в браузере вы выполняете Get-запросы. Нажимая кнопку "отправить" в этом форуме - выполняете Post-запрос, параметры которого (набранное сообщение, к примеру) передаются в cgi-скрипт на сервере. Это если упрощенно.
Как сделать?
Для этого надо почитать какой нибудь "HTTP для чайников" (я читал именно такую), и иметь под рукой RFC (можно этот http://www.faqs.org/rfcs/rfc2068.html)
Устанавливаете TCP-соединение средствами SIM300 и отправляете POST-запрос.
Виталий Якименко
Спасибо, почитаю, попробую. Но это ж еще скрипт писать надо на сервер. И опять же, будут вопросы, если данные не текст, а двоичные.
alexey123
Цитата(Виталий Якименко @ Jul 24 2007, 13:57) *
Но это ж еще скрипт писать надо на сервер.


Предполагаю, что проблема возникнет не с написанием самого скрипта, а с его размещением на чужом сервере. Хотя, если вам открыли доступ по FTP - могут и со скриптом помочь, наверное.
А скриптовое программирование открывает широкие двери для дальнейшей обработки вашей информации. Можно классифицировать ее на этапе приемки, сваливать на MySQL, строить на ее основе динамические страницы и крутить их на этом-же сервере...

Определенно сюда надо идти.

Цитата(Виталий Якименко @ Jul 24 2007, 13:57) *
И опять же, будут вопросы, если данные не текст, а двоичные.

Двоичные данные или текст - протоколу без разницы. В запросе есть поле content_type...
Виталий Якименко
За подсказки спасибо. В принципе, есть две задачи - в одной из них нужны просто файлы, темп записи около 1 кБ каждые 8 сек. Думаю, здесь лучше FTP. В другой задаче - объем меньше, но и MySQL может пригодиться, и динамические страницы для визуализации.

А с размещением скрипта проблемы нет - если на сервере хостится сайт, там есть и WEB-сервер, и скрипты, и FTP, и MySQL...
bullit
Цитата(Виталий Якименко @ Jul 23 2007, 20:05) *
Да, для больших файлов, конечно, будут проблемы. Зато, если небольшими порциями - например, результаты измерений - дописывать в файл - очень удобно. В одном TCP пакете можно передавать до 1 кБ - часто вполне достаточно

А вы пробывали дописывать файл?
У меня Wavecom модем. Дописывать файл не возможно на серваке, всё в этом файле переписывается, новой информацией.
Думаю тут мало зависит от ftp сервака, самого.
Виталий Якименко
Специально сейчас проверил. Да, именно дописываю, командой APPE протокола FTP. Прекрасно дописывает. Если пользоваться командами FTP, то все зависит от FTP-сервера, от модема практически ничего - он просто передает команды.

Может быть Вы используете не команды FTP в "чистом" виде, а реализацию FTP, которая есть в модемах Wavecom? Тогда вопросы к модему, или к тому, как Вы с ним работаете...
Ujin
Цитата(Виталий Якименко @ Jul 22 2007, 19:13) *
Расписал все что знаю на данный момент. Если у кого есть больший опыт - поделитесь.

Здравствуйте!
Пробовал писать на FTP по Вашей методике, но не получается, потому что в ответ на команду port сервер отвечает - "500 Illegal PORT command", может ли такое быть, что сервер не поддерживает команду port? И как в этом случае поступать?
Виталий Якименко
Цитата(Ujin @ Aug 16 2007, 10:57) *
Здравствуйте!
Пробовал писать на FTP по Вашей методике, но не получается, потому что в ответ на команду port сервер отвечает - "500 Illegal PORT command", может ли такое быть, что сервер не поддерживает команду port? И как в этом случае поступать?



напишите, что именно Вы написали в команде PORT
Ujin
Цитата(Виталий Якименко @ Aug 16 2007, 12:57) *
напишите, что именно Вы написали в команде PORT

передавал "PORT 10,10,39,190,7,228"
айпишник свой узнавал как у Вас в статье написано, директорию создать и в нее перейти получилось, а порт никак не получается.
Виталий Якименко
Цитата(Ujin @ Aug 16 2007, 14:26) *
передавал "PORT 10,10,39,190,7,228"
айпишник свой узнавал как у Вас в статье написано, директорию создать и в нее перейти получилось, а порт никак не получается.


В описании FTP написано:
500 Syntax error, command unrecognized.
This may include errors such as command line too long.

Получается, что он не понимет команду. Либо у Вас в команду вкрался некий символ, которого мы не видим, либо сервер не поддерживает команду PORT
(что было бы странно) .
Я бы попробовал следующее:
- набрать PORT маленькими и большими буквами
- попробовать с другим FTP- сервером.

В принципе, не важно, какой IP Вы укажете в команде PORT - устанавливать Data Connection
FTP-сервер будет только потом, когда получит команду на передачу данных
Ujin
Цитата(Виталий Якименко @ Aug 16 2007, 14:38) *
В описании FTP написано:
500 Syntax error, command unrecognized.
This may include errors such as command line too long.

Получается, что он не понимет команду. Либо у Вас в команду вкрался некий символ, которого мы не видим, либо сервер не поддерживает команду PORT
(что было бы странно) .
Я бы попробовал следующее:
- набрать PORT маленькими и большими буквами
- попробовать с другим FTP- сервером.

В принципе, не важно, какой IP Вы укажете в команде PORT - устанавливать Data Connection
FTP-сервер будет только потом, когда получит команду на передачу данных

маленькими буквами пробовал тоже, попробовал пробелы вставлять после запятой, тогда пишет "501 Invalid number of arguments"
лишнего ничего попадать не должно, набираю в терминале
Виталий Якименко
Цитата(Ujin @ Aug 16 2007, 15:11) *
маленькими буквами пробовал тоже, попробовал пробелы вставлять после запятой, тогда пишет "501 Invalid number of arguments"


Получается, что при правильном наборе он видит не ошибку в параметрах, а не понимает саму команду. Попробуйте с другим FTP-сервером. Если нет возможности - я Вам могу предложить свой (пишите на E-mail).

B еще - когда входите на FTP-сервер, он пишет приветствие. Напишите мне, что он пишет ?
Ujin
Цитата(Виталий Якименко @ Aug 16 2007, 14:38) *
В описании FTP написано:
500 Syntax error, command unrecognized.
This may include errors such as command line too long.

Получается, что он не понимет команду. Либо у Вас в команду вкрался некий символ, которого мы не видим, либо сервер не поддерживает команду PORT
(что было бы странно) .
Я бы попробовал следующее:
- набрать PORT маленькими и большими буквами
- попробовать с другим FTP- сервером.

В принципе, не важно, какой IP Вы укажете в команде PORT - устанавливать Data Connection
FTP-сервер будет только потом, когда получит команду на передачу данных

Оказывается ему айпишник не нравится - 10.х.х.х ведь зарезервировано для внутренних сетей, пробовал в port писать свой домашний - работает. Но вот только теперь следующая проблема - почему оператор такой айпишник дает на модуль?
edo
сотовые операторы обычно выдают серые ip, осуществляя nat, при этом для ftp должна быть дополнительная поддержка (ибо он передает ip-адреса непосредственно в сообщении).
похоже у вашего оператора нет такой поддержи.

возможные варианты - использовать пассивный режим или же http.

пример пассивного режима:
Код
$ telnet 10.0.0.20 21
Trying 10.0.0.20...
Connected to 10.0.0.20.
Escape character is '^]'.
220 (vsFTPd 2.0.5)
USER guest
331 Please specify the password.
PASS хрен-я-вам-скажу
230 Login successful.
PASV
227 Entering Passive Mode (10,0,0,20,218,140)
STOR aaa
150 Ok to send data.
226 File receive OK.
PASV
227 Entering Passive Mode (10,0,0,20,193,58)
LIST
150 Here comes the directory listing.
226 Directory send OK.
QUIT
221 Goodbye.
Connection closed by foreign host.


в это время в соседней консоли:
Код
$ telnet 10.0.0.20 $((218*256+140))
Trying 10.0.0.20...
Connected to 10.0.0.20.
Escape character is '^]'.
hello

^]
telnet> quit
Connection closed.
$ telnet 10.0.0.20 $((193*256+58))
Trying 10.0.0.20...
Connected to 10.0.0.20.
Escape character is '^]'.
-rw-------    1 1003     1003           19 Aug 16 19:00 aaa
Connection closed by foreign host.
Виталий Якименко
Цитата(edo @ Aug 16 2007, 22:10) *
возможные варианты - использовать пассивный режим или же http.


C пассивным режимом понятно, но для этого на SIM300 нужно открыть два соединения, а это невозможно. Максимум - это одно как клиент, одно как сервер.
edo
а что вы так http не хотите? по-моему удобнее
Ujin
Цитата(edo @ Aug 17 2007, 10:51) *
а что вы так http не хотите? по-моему удобнее

Это как?
Ujin
Цитата(edo @ Aug 17 2007, 19:12) *

Непоняяятно wacko.gif
А можно человеческим языком, или примером?
edo
что именно непонятно? ставите на сервер апач или ещё что, разрешаете PUT. после коннектитесь через модем на 80 порт и говорите тот самый PUT
Виталий Якименко
Цитата(edo @ Aug 17 2007, 10:51) *
а что вы так http не хотите? по-моему удобнее

В целом может и удобнее. Но если объем большой, и данные двоичные - насколько это будет удобно через HTTP ?
edo
а какая разница какие данные и каков объем?
кардинальных отличия 2:
- в http данные передаются в том же tcp-соединении, что и команды;
- в http/1.0 каждая команда выполняется в отдельном соединении (что всё равно меньше, чем то же одно соединение для каждой передачи данных в ftp + ещё одно общее соединение для передачи команд). в http/1.1 в одной tcp-сессии можно выполнять несколько команд.
AlexandrY
Ну допустим и в HTTP/1.0 можно было держать соединение открытым.
Это делаеться вставкой заголовка: Connection: Keep-Alive

Во вторых, администратор сервера при желании может и для HTTP/1.1 запретить держать долговременные соединения.

В третьих, c помощью HTTP механизмы FTP никак не заменить.
Это и дописывание файлов, и переименование, и удаление, и скачивание по частям, и хождение по директроиям и т.д.
Тем более, что нынче в GSM сетях можно открыть и пассивный и активный FTP.


Цитата(edo @ Aug 19 2007, 19:03) *
а какая разница какие данные и каков объем?
кардинальных отличия 2:
- в http данные передаются в том же tcp-соединении, что и команды;
- в http/1.0 каждая команда выполняется в отдельном соединении (что всё равно меньше, чем то же одно соединение для каждой передачи данных в ftp + ещё одно общее соединение для передачи команд). в http/1.1 в одной tcp-сессии можно выполнять несколько команд.
Тимофей
Цитата(alexey123 @ Jul 24 2007, 13:51) *
POST - немного другая технология. В HTTP есть два основных метода - Get и Post.

Мне интересно у кого нибудь получилось отправить запрос на загрузку html страницы методом Get с помощью SIM 300. Если получилось, то пожалуйста поделитесь опытом!!! help.gif
IV_K
Цитата(Тимофей @ Sep 5 2007, 09:39) *
Мне интересно у кого нибудь получилось отправить запрос на загрузку html страницы методом Get с помощью SIM 300. Если получилось, то пожалуйста поделитесь опытом!!! help.gif


at+cipstart="tcp","217.16.16.134","80"
OK

CONNECT OK
at+cipsend
> GET http://caxapa.ru/1.htm?q=qwerty HTTP/1.0

SEND OK
a/
>

SEND OK
HTTP/1.1 200 OK
Date: Fri, 12 Oct 2007 10:05:47 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
Server: Apache
Cache-Control: max-age=0
Expires: Fri, 12 Oct 2007 10:05:47 GMT

qwerty
CLOSED
*antzol*
У меня такая проблема:
Есть два gsm-модуля на основе sim300d. Один из них подключен к компу, на котором установлен web сервер apache 2.2.6, ip фиксированный. Нарисовал пару html-страниц. При попытке подключиться к этому серверу браузером всё получается, страница открывается.
Пытаюсь подключиться к этому серверу с помощью второго gsm-модуля at-командами, ничего не выходит. На попытку соединения отвечает:
at+cipstart="tcp","здесь_мой_ip","80"
OK

STATE: TCP CONNECTING

CONNECT FAIL

Пример, который написал IV_K, получается, модуль подключается к сахаре.

В чем может быть загвоздка? Может что-то в настройках сервера?
CADiLO
>>>>Пытаюсь подключиться к этому серверу с помощью второго gsm-модуля at-командами, ничего не выходит. На попытку соединения отвечает:
at+cipstart="tcp","здесь_мой_ip","80"
OK


В модулях 300D SST до 12 версии есть ошибка!!!!

При попытке прямо указать некоторые порты модуль тупо их игнорирует, причем проявляется это не на всех операторах.
Например не воспринимались "1080" и "4480" на Билайне.

Если у вас модуль с памятью SST и прошивка 12 или ниже - обновитесь до 13 версии. Прошивки и прошивальщик я выкладывал на форуме.
*antzol*
Но тогда, насколько я понимаю, не получилось бы и этого:
Цитата
at+cipstart="tcp","217.16.16.134","80"
OK

CONNECT OK
at+cipsend
> GET http://caxapa.ru/1.htm?q=qwerty HTTP/1.0

SEND OK
Ndf
Цитата(CADiLO @ Dec 12 2007, 14:43) *
В модулях 300D SST до 12 версии есть ошибка!!!!

CADiLO прав, но только ошибка там другая smile.gif , сервер на базе SIM300 не может создать многосокетное соединение, другими словами обслуживать одновременно более одного клиента.
*antzol*
Так сервер не использует tcp/ip стек модуля. И с портами в модуле клиента по-моему всё нормально (с сахарой он нормально соединяется)... И сервер работает (html-страницы на нем открываются)...
В общем всё как бы работает, а в итоге ничего не получается...
Ndf
Цитата(*antzol* @ Dec 14 2007, 21:39) *
Так сервер не использует tcp/ip стек модуля

Что-то не пойму я вас, а как же это: "Есть два gsm-модуля на основе sim300d. Один из них подключен к компу, на котором установлен web сервер"? Я так понимаю, что через модуль ваш сайт подключен к инету, а значит tcp/ip стек модуля используется.
*antzol*
Нет, не используется. Комп с web сервером использует модуль как обычный модем (чтоб подключиться к инету, набираю телефон *99***1#).
RomanRom
Спасибо Виталию за подробно расписанный документ по FTP.
По его методике получается достучаться к серверу, но без регистрации на нем дальше не пройдешь.
Посоветуйте, какой бесплатный ftp в Инете или Рунете можно использовать (точнее, кто какой использует реально)? Можно ли ориентироваться на сервисы, подобные http://www.xdrive.com/ и Народ.Яндекс.Диск?
RomanRom
Ситуация следующая. Могу войти на сервер и создать файл нулевой длины по методике В.Якименко. Но закачать данные в файл не получается, пробовал с двух серверов. На странице 5 документа после команды at+cipccon=2 на команду at+cipsend ответ ERROR. До этого посылаю команду port xxxxxxxxx и наблюдаю ответ 200 PORT command successful. Может есть какая-то другая последовательность команд или что-то пропущено или где-то надо ждать определенной надписи, потому что на разных серверах разные сообщения.
quarter2
К методике В.Якименко добавлю одно уточнение.

at+cipccon=2
OK

Передаем данные
at+cipsend
> text for file 12345
SEND OK

ТЕПЕРЬ (ОБЯЗАТЕЛЬНО!!!) НУЖНО ЗАКРЫТЬ СОЕДИНЕНИЕ: AT+CIPCLOSE

и только после этого давать команду
at+cipccon=1
OK

Ещё одни грабли, на которые я наступил: если по команде at+cifsr
вы не получили адреса типа: 88.214.93.220,
а что-то вроде 10.34.34.65
т.е. начинающиеся с 10 - значит ваш GSM-оператор не способен для СИМ300 обеспечить серверное соединение (только клиентское, т.е. вы можете подсоединиться к кому-то, а к вам никто не сможет) В этом случае нужно менять оператора. Я так и сделал. Теперь работаю с FTP-сервером без проблем.
head_sk
А никто не пробывал скачивать файлики с SSH? Как думаете реализуема ли эта затея?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.