Перейти к содержимому


Фотография

File Transfer Protocol


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 22 Декабрь 2015 - 17:53

*
Популярное сообщение!

Как может быть понятно из названия, данный пакет программ предназначен для обмена файлами между двумя или более ОС-компьютерами с использованием сетевых плат.

Вопрос передачи файлов по проводной или беспроводной сети уже несколько раз поднимался на страницах нашего форума, но предлагаемое решение обладает одной существенной особенностью. Оно не просто передает тот или иной файл, оно позволяет одному компьютеру (клиенту) обращаться к дисковому пространству другого компьютера (сервера) как к своему собственному. Покажу на примере.

Для демонстрации нам понадобится два компьютера, связанных при помощи проводных или беспроводных модемов. На одном из них, который мы в дальнейшем будем именовать - сервер, установим программу ftp_serv

 

pastebin get F7d8Ef0S ftp_serv.lua

 

Программа требует два параметра: имя, под которым наш сервер будет виден в сети, и путь к папке, которую сервер предоставляет для удаленного доступа. Имя не должно содержать пробелов, а папка должна принадлежать файловой системе, с которой была произведена загрузка OpenOS. Второй параметр может отсутствовать, в этом случае доступ будет предоставлен ко всей файловой системе.

Для нашего примера создадим папку shared, а в ней папки и файлы с произвольными данными.

Запустим ftp-сервер с именем, например, alpha.

ftp_serv alpha shared

2015-12-22_16.34.16.png

Теперь обратимся ко второму компьютеру. Его мы будем именовать - клиент. На клиенте установим клиентскую часть.

 

pastebin get 0u58kX0K ftp.lua

 

Если клиентскую часть запустить с ключом /scan, будет произведен поиск доступных ftp-серверов.

ftp /scan

2015-12-22_16.35.44.png

При сканировании выводятся имена серверов, расстояния до них и id сетевой платы сервера.

Для того, чтобы подключиться к серверу необходимо запустить программу ftp с указанием имени сервера

ftp alpha

После подключения мы должны обнаружить в корне файловой системы папку ftp, а в ней папку с именем сервера - alpha.

2015-12-22_16.36.45.png

Вот тут внимание! Эта папка и всё, что в ней находится не скопированы с сервера, а предоставлены сервером удаленно. Вы можете копировать сюда или отсюда файлы, удалять их или открывать на редактирование так, как если бы они находились на локальном жестком диске клиента. Однако существует ограничение: один клиент может открыть на сервере не более одного файла одновременно. При попытке открыть второй файл, первый будет закрыт автоматически. Это связано с тем, что если клиент отключится не закрыв открытый файл, то файл фактически останется открытым на сервере, а ОС-компьютер имеет ограничение на количество открытых файлов.

Для того, что бы отключиться от ftp-сервера, можно воспользоваться стандартной утилитой umount. Выйдите в корень файловой системы и выполните команду

umount ftp/alpha

Сообщение отредактировал Zer0Galaxy: 23 Декабрь 2015 - 17:22


#2 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,86%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 22 Декабрь 2015 - 18:25

Круто.


Сообщение отредактировал NEO: 22 Декабрь 2015 - 18:25


#3 Онлайн   davial

davial
  • Пользователи
  • Сообщений: 440
  • Уровень сигнала: 15,37%
  • В игре: 115 час. 7 мин.
  • ГородТроон в системе Канопуса.

Награды

                    

Отправлено 22 Декабрь 2015 - 19:41

Классно.

У меня только один вопрос появился. Ты говоришь, что если клиент отвалится, то файл останется открытым. А если "прикрутить" проверку : после установления соединения, сервер, время от времени, пускай даёт запрос клиенту : "Ты тут?". И если по происшествии, заранее установленного времени, от клиента не будет ответа, то - закрывать файл.



#4 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 22 Декабрь 2015 - 21:50

Можно еще так сделать, сервер принудительно закрывает файл, к которому не было обращения в течение определенного времени. Но ограничивать количество открываемых файлов все равно надо. Ведь клиентов может быть сколько угодно, а файлов можно открыть только 16. Скажем, открою я сразу 16 файлов и никто больше скачать с сервера ничего не сможет.

#5 Оффлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 205
  • Уровень сигнала: 15,56%
  • В игре: 116 час. 32 мин.
  • ГородЛуна

Награды

                       

Отправлено 22 Декабрь 2015 - 23:06

Если это File Transfer Protocol (как написано в заголовке), то будьте добры, rfc959. Либо меняйте название, на какой нибудь Minecraft File Transfer Protocol (mFTP)
  • Programist135, swg2you и Kartze это нравится

#6 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 22 Декабрь 2015 - 23:28

File Transfer Protocol переводится как "Протокол передачи файлов". Описанный в теме протокол предназначен для передачи файлов и он передает файлы. Поэтому, на мой взгляд, название темы полностью соответствует её содержанию. Если в мире существуют какие либо другие протоколы передачи файлов с таким же названием, то это совпадение случайно. Если словосочетание "File Transfer Protocol" запатентовано и правообладатель предъявит свои претензии, то я изменю название. В противном случае я бы хотел оставить как есть.

#7 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 748
  • Уровень сигнала: 4,86%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 22 Декабрь 2015 - 23:58

File Transfer Protocol переводится как "Протокол передачи файлов". Описанный в теме протокол предназначен для передачи файлов и он передает файлы. Поэтому, на мой взгляд, название темы полностью соответствует её содержанию. Если в мире существуют какие либо другие протоколы передачи файлов с таким же названием, то это совпадение случайно. Если словосочетание "File Transfer Protocol" запатентовано и правообладатель предъявит свои претензии, то я изменю название. В противном случае я бы хотел оставить как есть.


Не волнуйся, все хорошо, а инца не слушай, он всегда любит такие штучки делать.

#8 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 739
  • Уровень сигнала: 52,45%
  • В игре: 392 час. 51 мин.

Награды

                 

Отправлено 23 Декабрь 2015 - 03:17

Не волнуйся, все хорошо, а инца не слушай, он всегда любит такие штучки делать.

ЛехеИнцу лишь бы козявку какую-то кинуть в кого-то куда-то, вместо того, чтобы программку писать какую-то=) "Козявочник" он местный просто)))


  • ECS это нравится

#9 Оффлайн   swg2you

swg2you
  • Пользователи
  • Сообщений: 268
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

              

Отправлено 23 Декабрь 2015 - 04:05

Реализация собственного варианта протокола передачи файлов, да еще и монтированием удаленной файловой системы - хорошая задача.

Второй этап - реализация клиента совместимого с общепринятым протоколом FTP? Было бы круто. 


  • Fingercomp это нравится

#10 Оффлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 205
  • Уровень сигнала: 15,56%
  • В игре: 116 час. 32 мин.
  • ГородЛуна

Награды

                       

Отправлено 23 Декабрь 2015 - 07:49

ЛехеИнцу лишь бы козявку какую-то кинуть в кого-то куда-то, вместо того, чтобы программку писать какую-то=) "Козявочник" он местный просто)))



Нихрена. Я просто для майна писать не могу, знак свыше получил - майн сломался и лень фиксить. Так бы я сам написал нормальный фтп. А программку я итак пишу, только не для кубиков.

Сообщение отредактировал LeshaInc: 23 Декабрь 2015 - 07:53

  • Fingercomp это нравится

#11 Оффлайн   Programist135

Programist135
  • Пользователи
  • Сообщений: 111
  • Уровень сигнала: 1,39%
  • В игре: 10 час. 24 мин.
  • ГородСамара

Награды

        

Отправлено 23 Декабрь 2015 - 15:35

Интересно  :) Теперь вы можете без проблем сделать OpenCloud, но:

  • Сделай программу как библиотеку. Чтобы можно было вставлять в другие программы.


#12 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Автор темы
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 23 Декабрь 2015 - 16:57

Сделай программу как библиотеку. Чтобы можно было вставлять в другие программы.
Какую именно программу? Клиента или сервера? Клиент садится резидентно и предоставляет доступ к серверу как к файловой системе. А сервер тоже сделаю резидентным. Какие функции библиотека должна предоставлять? 

#13 Онлайн   ZKoshak

ZKoshak
  • Пользователи
  • Сообщений: 25
  • Уровень сигнала: 38,05%
  • В игре: 285 час. 1 мин.

Отправлено 21 Январь 2017 - 21:22

При записи в папку на клиенте и как следствии передачи файла, сервер валится с вот таким сообщением:2017-01-21-211759_1280x800_scrot.png

 

Такая же шняга при копировании из папки.


Сообщение отредактировал ZKoshak: 22 Январь 2017 - 03:01





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных