реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Работа с TFTP.
Jenya7
сообщение Oct 3 2017, 10:05
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(XVR @ Oct 3 2017, 15:00) *
Зачем вам директория в RAM? Зачем вам вообще файловая система? TFTP сервер должен принимать и отдавать файлы по имени, а где они будут лежать, и какие имена могут быть - это целиком внутреннее дело самого сервера.
Считайте, что у вас все файлы лежат просто списком, но имя файла может содержать символ '/'

https://ru.wikipedia.org/wiki/TFTP

Да но мне нужно организовать передачу файлов по TFTP между двумя системами. Я должен быть сервером.
Клиент должен знать куда стучаться? адрес, порт, путь к файлу? я что не должен у себя это определить?

в приведенном примере для NFS создается директория mkdir("/ram0/MFL_FILES"); и она привязывается к NFS nfsExport("/ram0/MFL_FILES" ,555,FALSE,0 )
разве мне не нужно сделать что то подобное?

Сообщение отредактировал Jenya7 - Oct 3 2017, 10:08
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 3 2017, 10:18
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Клиент стучится на tftp порт (69) на ваш IP, в запросе передает имя файла, и вы должны его принять или передать (в зависимости от запроса). Куда физически попадет файл целиком зависит от самого tfpt сервера (того самого, что слушает на 69 порту).
Цитата
Да но мне нужно организовать передачу файлов по TFTP между двумя системами.
У вас файлы на вашей системе физически есть? Если да, то их и передавайте (с теми путями, какие поддерживает ваша файловая система, где файлы живут)
Если нет - то какое вообще назначение этого вашего tfpt сервера? Ведь если файлов нет, то и обмениваться нечем wink.gif
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Oct 3 2017, 10:25
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(XVR @ Oct 3 2017, 15:18) *
Клиент стучится на tftp порт (69) на ваш IP, в запросе передает имя файла, и вы должны его принять или передать (в зависимости от запроса). Куда физически попадет файл целиком зависит от самого tfpt сервера (того самого, что слушает на 69 порту).
У вас файлы на вашей системе физически есть? Если да, то их и передавайте (с теми путями, какие поддерживает ваша файловая система, где файлы живут)
Если нет - то какое вообще назначение этого вашего tfpt сервера? Ведь если файлов нет, то и обмениваться нечем wink.gif


то есть допустим я создаю директорию
Код
mkdir("/ram0/TFTP_FILES");

клиент может положить туда файл и взять оттуда файл? я не должен конфигурировать у себя ничего?
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 3 2017, 11:30
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Для начала вы должны поднять у себя tftp сервер. Затем сказать ему (серверу), где у вас лежат файлы для обмена с клиентами. В засисимости от сервера это может быть сделано самыми разными путями. Если сервер напрямую работает с файловой системой, то нужно сказать ему путь до корневой папки, где ему резвится. Если сервер является глубоко embedded приложением и не контактирует с реальной файловой системой (например по причине ее отсуствия), то у него должны быть свои собственные методы по эмуляции файловой системы для клиентов.
У вас что используется в качестве сервера?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Oct 3 2017, 12:06
Сообщение #20


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(XVR @ Oct 3 2017, 16:30) *
Для начала вы должны поднять у себя tftp сервер. Затем сказать ему (серверу), где у вас лежат файлы для обмена с клиентами. В засисимости от сервера это может быть сделано самыми разными путями. Если сервер напрямую работает с файловой системой, то нужно сказать ему путь до корневой папки, где ему резвится. Если сервер является глубоко embedded приложением и не контактирует с реальной файловой системой (например по причине ее отсуствия), то у него должны быть свои собственные методы по эмуляции файловой системы для клиентов.
У вас что используется в качестве сервера?

я пользуюсь tftpLib в vxWorks. Там есть tftpInit() но это скорее для клиента а насчет сервера там все невнятно. нигде не смог найти внятного описания.
я создал директорию mkdir("/ram0/TFTP_FILES"); но как связать ее с TFTP?

Сообщение отредактировал Jenya7 - Oct 3 2017, 12:07
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 3 2017, 14:32
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Jenya7 @ Oct 3 2017, 15:06) *
я пользуюсь tftpLib в vxWorks.
Это библиотека для клиента tftp. Вам нужна tftpdLib (это сервер)
Функция tftpdInit запускает сервер с заданным списком директорий, откуда/куда подсоединившийся клиент сможет обмениваться файлами

Go to the top of the page
 
+Quote Post
Jenya7
сообщение Oct 3 2017, 14:57
Сообщение #22


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(XVR @ Oct 3 2017, 19:32) *
Это библиотека для клиента tftp. Вам нужна tftpdLib (это сервер)
Функция tftpdInit запускает сервер с заданным списком директорий, откуда/куда подсоединившийся клиент сможет обмениваться файлами

О! Вот спасибо! То что нужно.

Не получается подключить библиотеку. sad.gif
Код
STATUS TFTP_Setup(int stack_size)
{
  char *dir = "/ram0/TFTP_FILES";
            
  mkdir(dir);
    
  tftpdInit(stack_size, 1, " ", FALSE, 1);
    
  tftpdDirectoryAdd(dir);
    
        
  return OK;
}

при компиляции получаю
Цитата
dld: warning: Undefined symbol 'tftpdDirectoryAdd' in file 'tftp.o'
dld: warning: Undefined symbol 'tftpdInit' in file 'tftp.o'
dld: error: Undefined symbols found - no output written

функции 'tftpdDirectoryAdd и tftpdInit в tftpdLib.h определены как extern . tftpdLib.h откуда то их тянет. но в tftpdLib.h ошибка не генерерируется значит функции присутствуют. почему тогда я получаю ошибку?

Сообщение отредактировал Jenya7 - Oct 4 2017, 09:51
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 4 2017, 10:13
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Может их вообще нет? Забыли реализовать sm.gif
Подайте список директорий в tftpdInit. Если вам не надо на ходу этот список менять, то этого будет достаточно.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Oct 10 2017, 07:29
Сообщение #24


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



В vxWorks 6.9 они убрали эти функции.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 13:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01425 секунд с 7
ELECTRONIX ©2004-2016