2015-05-14 6 views
3

Я программирую встроенное программное обеспечение на C (не C++), которое позволяет мне передавать файл на ftp (некоторые данные, которые есть у конкретного оборудования), но, похоже, я не знайте, как сделать перевод. Это мой код:FTP Загрузка файла из памяти в C

///pasive connection FTP 
    sprintf(szBuf, "PASV\r\n"); 
     FTP_SendCmd(szBuf); 

     if(!FTP_RecvResponse()) 
      return FALSE; 

     if(strncmp(szBuf , "227", 3) != 0) 
      return FALSE; 



     sprintf(szBuf, "STOR m4.html\r\n");//command that allows storage of a file in the FTP 
       FTP_SendCmd(szBuf); 
       if(!FTP_RecvResponse()) 
           return FALSE; 

       if(!FTP_RecvResponse()) 
        return FALSE; 

Дело в том, что СТОР использует имя файла, но так как это заказное оборудование Мне нужен способ, чтобы поток байт от конкретного адреса в SDRAM (0x000-0xFFF, например), так что я было интересно, может ли кто-нибудь дать мне небольшой совет по созданию файла, заполнить информацию на FTP?

+1

Имя файла дается 'STOR' то, где данные будут сохранены на сервере. Клиент может читать эти данные из любого места; ему просто нужно отправить его по каналу передачи данных (см. [здесь] (http://stackoverflow.com/questions/9624613/proper-user-of-stor-command), как это работает). – Diego

+0

@Diego, вероятно, ваш комментарий - именно то, что я искал, большое спасибо –

+0

@ Diego, который вы должны поставить, является ответом –

ответ

2

Протокол FTP работает с двумя различными соединениями, соединением управления и соединением данных. В зависимости от режима подключение к данным может быть инициировано либо сервером (активным), либо клиентом (пассивным).

Ответ команды PASV (который указывает пассивную передачу) содержит IP-адрес и PORT, на котором сервер прослушивает подключения к данным.

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

Итак, что вы здесь хватает:

  1. Разбор PASV ответ
  2. Открытие соединения для передачи данных и передача данных по ней

Есть другие exchages между клиентом и сервером, например, для координации завершения соединения с данными после передачи. Протокол описан в RFC 959.

Не зная, какую библиотеку вы используете, трудно сказать, как ее реализовать.

Шаг за шагом обзор можно найти here

+0

Спасибо Diego На самом деле мне нужно знать, что STOR указывает только имя, где будет сохранены. Все настройки подключения я реализовал сам, поэтому нет никакого беспокойства (на данный момент) благодаря Ответу PASV, который вы мне объясняете –

Смежные вопросы