|
Работа с TFTP. |
|
|
|
Sep 19 2017, 09:41
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Запускаю TFTP Server на стороне компьютера. На стороне прибора создаю TFTP Client и пытаюсь скопировать файл с сервера. Код STATUS TFTP_GetFile(char *host_adr, char *targ_file_name, char *dest_file_name) { FILE *file; int result; file = open (dest_file_name, O_RDWR | O_CREAT, 0644); result = tftpCopy (host_adr, 0, targ_file_name, "get", "ascii", file); if (result == OK) printf("TFTP DATA OK\n"); else printf("TFTP DATA TRANSFER FAIL\n"); return result; }
//в таске TFTP_GetFile(server_ip, "C:/Users/General/Desktop/TFTP_DIR/data.txt", "test.txt"); получаю сообщение от сервера Цитата Connection received from 10.0.0.10 on port 51398 [19/09 12:22:45.036] Read request for file <C:/Users/General/Desktop/TFTP_DIR/data.txt>. Mode netascii [19/09 12:22:45.036] File <C:\Users\General\Desktop\TFTP_DIR\data.txt> : error 123 in system call CreateFile The filename, directory name, or volume label syntax is incorrect. [19/09 12:22:45.036] В чем может быть проблема? Мне кажется что файл не создается по каким то причинам. file = open (dest_file_name, O_RDWR | O_CREAT, 0644);
|
|
|
|
|
Sep 19 2017, 20:24
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 7-03-11
Из: Владимир
Пользователь №: 63 445

|
Цитата(Jenya7 @ Sep 19 2017, 17:25)  такой файл существует C:\Users\General\Desktop\TFTP_DIR\data.txt и директория в сервере задана C:\Users\General\Desktop\TFTP_DIR Если у тебя у TFTP сервера корневая папка C:\Users\General\Desktop\TFTP_DIR\ То тебе в коде скорее всего надо написать просто TFTP_GetFile(server_ip, "data.txt", "test.txt"); То есть TFTP клиент по умолчанию попадает в папку C:\Users\General\Desktop\TFTP_DIR\ и из нее должен забрать файлик data.txt О структуре папок на твоём компе и тем более диске C: TFTP сервер клиенту не сообщает и по идее сам не должен лезть выше обозначенной папки.
|
|
|
|
|
Sep 20 2017, 06:46
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(Barcooler @ Sep 20 2017, 02:24)  Если у тебя у TFTP сервера корневая папка C:\Users\General\Desktop\TFTP_DIR\ То тебе в коде скорее всего надо написать просто TFTP_GetFile(server_ip, "data.txt", "test.txt");
То есть TFTP клиент по умолчанию попадает в папку C:\Users\General\Desktop\TFTP_DIR\ и из нее должен забрать файлик data.txt О структуре папок на твоём компе и тем более диске C: TFTP сервер клиенту не сообщает и по идее сам не должен лезть выше обозначенной папки. спасибо! в этом была проблема. теперь я вижу сервер посылает файл. но я не могу прочесть содержимое. что то не так делаю Код STATUS TFTP_GetFile(char *host_adr, char *targ_file_name, char *dest_file_name) { FILE *file; int result; int len; file = open (dest_file_name, O_RDWR | O_CREAT, 0644); result = tftpCopy (host_adr, 69, targ_file_name, "get", "ascii", file); if (result == OK) { len = read(file, buff, size); printf("TFTP DATA = %s\n", buff); } else printf("TFTP DATA TRANSFER FAIL\n"); return result; }
//в таске char read_buf[1024]; TFTP_GetFile(server_ip, "data.txt", "test.txt", read_buff, 20);
|
|
|
|
|
Sep 20 2017, 09:15
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 7-03-11
Из: Владимир
Пользователь №: 63 445

|
Какую программу TFTP сервера используете? Возможно в настройках сервера необходимо указать вариант передачи. И другой вопрос - получается-ли отправить на TFTP сервер файлик, лежащий уже на устройстве? Если удаётся - получается-ли прочитать его содержимое на компе?
Сообщение отредактировал Barcooler - Sep 20 2017, 09:16
|
|
|
|
|
Sep 20 2017, 09:54
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 7-03-11
Из: Владимир
Пользователь №: 63 445

|
Цитата(Jenya7 @ Sep 20 2017, 12:29)  пользуюсь tftpd64. попробую отправить файл на сервер. Попробуй один и тот-же файл скопировать с сервера, а потом отправить обратно. Если содержимое останется читаемым - значит проблема в контроллере, либо в содержимом самого текстового файлика. Так-же попробуй создать текстовый файлик редактором типа sublime или notepad++ (если до этого файл создавался обычным блокнотом в винде). Содержимое файла постарайся сделать минимальным - например 123. Если такой файл прочитается девайсом - это будет говорить о том, что либо дело в кодировке, либо виндовый блокнот использует "запрещённые символы"
|
|
|
|
|
Sep 21 2017, 20:15
|
Участник

Группа: Участник
Сообщений: 49
Регистрация: 7-03-11
Из: Владимир
Пользователь №: 63 445

|
Всё?
|
|
|
|
|
Oct 3 2017, 08:11
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Тут выясняется что я должен быть сервер. А как мне создать директорию в RAM? Для NFS делают так Код mkdir("/ram0/MFL_FILES");
if(nfsExport("/ram0/MFL_FILES" ,555,FALSE,0 ) == ERROR) { printf("ERROR EXPORTING /ram0/MFL_FILES \n"); } else { printf("EXPORTING O.K. /ram0/MFL_FILES \n"); }
cd("/ram0") А как сделать для TFTP?
Сообщение отредактировал Jenya7 - Oct 3 2017, 08:12
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|