Открыть файл в сети в linux

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Открыть файл в сети в linux

Сообщение jsa » 02.05.2019 11:40:26

Пишу утилиту, работать должна как в windows так и в ubuntu/mint
Работает с базой одной ПО.
Клиентские программы из локального файла options.ini считывают имя файла параметров, файл сетевой \\192.168.100.1\base\params.ini
и из этого файла считывает уже параметры подключения к sql серверу.
В win нет проблем использовать TIniFile.Create('\\192.168.100.1\base\params.ini');
В linux понятно, что можно все нужные параметры прописать в один файл и читать его или скопировать params.ini на комп и читать его локально.
Но вот как быть в случае если params.ini должен лежать в сети?
Не нашел как можно в Lazarus на линуксе подключиться к сетевой папке и считать файл, не монтируя эту папку, или не скачивая файл.
Вообще существует такой способ?
Последний раз редактировалось jsa 02.05.2019 12:48:36, всего редактировалось 1 раз.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Открыть файл в сети в linux

Сообщение Снег Север » 02.05.2019 12:27:52

jsa, вы правда считаете, что "прочитать файл" с сетевого ресурса в принципе возможно, не скачав его содержимое, хотя бы, как временный файл? :D
Так почему бы его не скачать явно и не мучиться?
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2990
Зарегистрирован: 27.11.2007 16:14:47

Re: Открыть файл в сети в linux

Сообщение jsa » 02.05.2019 12:34:00

Снег Север писал(а):jsa, вы правда считаете, что "прочитать файл" с сетевого ресурса в принципе возможно, не скачав его содержимое, хотя бы, как временный файл? :D

Нет, я так не считаю, я это знаю. Вопрос сформулирован с ехидцей и с подвохом. Естественно нужно скачать его содержимое. А вот скачивание как временного файла не нужно.
Снег Север писал(а):Так почему бы его не скачать явно и не мучиться?

Это не мучение, это вопрос о возможности, сделать это в Lazarus под linux
Последний раз редактировалось jsa 02.05.2019 12:36:21, всего редактировалось 1 раз.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Открыть файл в сети в linux

Сообщение Снег Север » 02.05.2019 12:35:58

jsa писал(а):Нет, я так не считаю, я это знаю

И как вы это себе представляете? Святым духом байты из файла переносятся на ваш комп, без скачивания? :D
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2990
Зарегистрирован: 27.11.2007 16:14:47

Re: Открыть файл в сети в linux

Сообщение jsa » 02.05.2019 12:41:28

Снег Север писал(а):И как вы это себе представляете? Святым духом байты из файла переносятся на ваш комп, без скачивания? :D


Я себе это представляю примерно так как это делает например VLC когда запускаешь его кликом по видео файлу открытому в caja по сетевому пути smb://mediaserv/films/....mkv
Тоже самое с любым другим файлом.

Я то различаю понятия "скачав его содержимое" и "хотя бы как временный файл", а вы?
Или вЫ считаете что VLC кэширует куда-то временный файл размером 15Гб, так что это просто не заметно происходит?
А-а-а-а, наверное в память или swap кэширует полностью файл чтобы получить в нему доступ.

P.S. Обязательно прикидываться дурачком и издеваться?
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Открыть файл в сети в linux

Сообщение Лекс Айрин » 02.05.2019 13:18:52

jsa, скачивание и временное скачивание ничем не отличаются. Все равно надо создавать соединение, получать доступ и закачивать файл. Разве что после этого он или удаляется, или нет. Поэтому никто не будет создавать отдельный механизм для скачивания файла без открытия соединения. Максимум, если только сервер будет плеваться специальным пакетом с настройками.
Да, VLC именно что скачивает файл частично и своппирует его на стороне клиента. При этом он удаляет уже проигранные части файла. Более того, у него даже отображается какая часть файла уже сохранена на диске. В виде бледненькой такой полоски. И если места мало, то он жутко ругается и тормозит. А да, он ещё и не запускает воспроизведение сволочь, пока не создаст кеш, просто не на каждой машине это заметишь.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Открыть файл в сети в linux

Сообщение jsa » 02.05.2019 13:49:48

Лекс Айрин писал(а):VLC именно что скачивает файл частично


Все таки, VLC получает доступ к содержимому файла. Скачивает нужный фрагмент, и сам его кэширует. В принципе может и не кэшировать в файл на диске вообще. А считывать н-штук ключевых кадров, распаковывать их в памяти и отображать.
Т.е. существует механизм доступа к содержимому файла находящему на другой машине без того чтобы сначала его скачать в свою файловую систему.

Еще раз. если мне нужно из файла ini лежащего на сервере взять 2 параметра, то мне не обязательно
1. Скачать файл.
2. открыть/прочитать
3. удалить файл.
Я могу в винде это сделать просто обратившись по сетевому имени.
Вопрос только в том знает ли кто из здешних специалистов как это можно сделать в Лазарусе в линуксе.
То что это в принципе возможно в линуксе, я не хочу обсуждать, этим все пользуются, но этот механизм зарыт в проводнике Nautilus/Caja/Thunar и т.д. и тот путь и та аутентицификация, что отображаются в них не подходят для методов Pascal
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Открыть файл в сети в linux

Сообщение Лекс Айрин » 02.05.2019 14:33:17

jsa, он просто запрашивает сектора по мере необходимости.
Тебе кажется, что файл не скачивается. Но почти всегда его можно даже найти в темпори папке системы или программы. Исключение может быть сделано только для одноранговой сети, где задержка минимальна. Но не стоит ее распространять на весь интернет, где в любой момент есть шанс событий приводящих к реконфигурации структуры связей.
Для интернета все однозначно скачивай и читай. Если есть возможность, то в режиме потока. Если у тебя есть доступ к серверу, то проще эти параметры передавать в процессе установления связи или запрашивать через скрипт. Но как я понимаю, доступа у тебя нет.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Открыть файл в сети в linux

Сообщение MysticCoder » 02.05.2019 18:57:10

https://searchcode.com/codesearch/view/64390136/

реализовывай свой клиент smb, скачивай хоть в память, хоть на диск. Если хочешь, удаленный файл открыть именно как файл в системе linux, то тут по любому придется либо монтировать, либо на диск сохранять. Как бы /tmp для этого и нужен, чтобы временные файлы там создавать.
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Re: Открыть файл в сети в linux

Сообщение olegy123 » 03.05.2019 06:25:49

Почему забыли HTML?
Чем вам не файлокачалка..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Открыть файл в сети в linux

Сообщение Снег Север » 03.05.2019 08:30:53

jsa писал(а):VLC получает доступ к содержимому файла. Скачивает нужный фрагмент, и сам его кэширует.

Тривиальная передача потока байт через сокет. Суть в том, что пофрагментная передача имеет смысл только для файлов в десятки мегабайт и выше. Для текстового ini смысл такой в передаче равен нулю, на все подключения уйдет времени больше, чем на полное скачивание, если у вас интернет не 90-х годов.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2990
Зарегистрирован: 27.11.2007 16:14:47

Re: Открыть файл в сети в linux

Сообщение Alex2013 » 04.05.2019 11:15:11

Заранее извиняюсь если покажется, что идея не "в тему" ...
Но на SMB свет клином не сошелся к файлу в сети можно добраться десятками разные способов .
Например через ftp,http ... Вот уж точно проще не придумаешь ! Настроил или сам собрал простейший сервак и читай что хочешь "прямо в память" например с помощью Synapse.

Добавлено спустя 9 минут 44 секунды:
Снег Север писал(а):
jsa писал(а):VLC получает доступ к содержимому файла. Скачивает нужный фрагмент, и сам его кэширует.

Тривиальная передача потока байт через сокет. Суть в том, что пофрагментная передача имеет смысл только для файлов в десятки мегабайт и выше. Для текстового ini смысл такой в передаче равен нулю, на все подключения уйдет времени больше, чем на полное скачивание, если у вас интернет не 90-х годов.

Очевидно, что дело в не желаний в принципе оставлять файл настроек на локальной машине (что актуально например для обучающих программ с тестированием полученных знаний ) или в возможности настроить все работающие в сети клиенты одним махом без нужды в специальной процедуре синхронизации .
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Открыть файл в сети в linux

Сообщение Снег Север » 04.05.2019 11:43:21

Alex2013 писал(а):Очевидно, что дело в не желаний в принципе оставлять файл настроек на локальной машине

Кто мешает читать файл в память? Memorystream существует испокон века...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2990
Зарегистрирован: 27.11.2007 16:14:47

Re: Открыть файл в сети в linux

Сообщение olegy123 » 05.05.2019 00:21:06

jsa писал(а):Я то различаю понятия "скачав его содержимое" и "хотя бы как временный файл", а вы?
зачем его сохранять?
Загрузили, проверили на истенность и сделали изменения.. И увсе.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Открыть файл в сети в linux

Сообщение jsa » 13.05.2019 09:48:07

olegy123 писал(а):
jsa писал(а):Я то различаю понятия "скачав его содержимое" и "хотя бы как временный файл", а вы?
зачем его сохранять?
Загрузили, проверили на истенность и сделали изменения.. И увсе.

Ваш вопрос точно ко мне? Я то вопрос поставил как открыть файл в сети, не скачивая его перед этим в локальную файловую систему. А вы про что, и почему пишите мне, я не понял.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru