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

 
 
> stm32f207+ethernet+xml, Как передавать XML запросы
Kalyan
сообщение Jun 21 2012, 21:21
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Добрый вечер. Начал работать с ethernet протоколом на микроконтроллере stm32f207. Запустил пример вебсервера с использованием Freertos с сайта STM. Глубохих знанй работы TCP/IP и HTTP нету. И вот мне надо по ethernet отправлять XML запросы. Я вообще не понимаю с какой стороны подойти к решению этой задачи. Подскажите пожалуйста где про это можно прочитать (не про сам протокол XML, а как генерировать их микроконтроллером и отправлять по ethernet). буду очень благодарен за информацию.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kalyan
сообщение Jun 22 2012, 15:42
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Для создания клиента буду пользоваться Netconn API functions со стека LwIp.
Допустим что на одной плате я запусти HTTP сервер тот что с примера с сайта CTM.
А на второй плате я запущу свой HTTP клиент. Вот как послать своим клиентом самый простой запрос к серверу.
Возникает ряд вопросов:
как работать с ip адресами?
Пусть у сервера будет 192.168.0.10 а у клиента 192.168.0.9.
Нашел функцию для его определения:
netconn_getaddr(conn, &local_ip_address, &port, 1);
Правильно ли я понял: эта функция должна найти адрес другого локального устройства (если флаг 1)? То есть адрес моего сервера ( 192.168.0.10). А если устройств в сети будет больше чем одно, тогда как? Но при использовании netconn_getaddr(conn, &local_ip_address, &port, 1) local_ip_address равняется нулю, но ошибка не возвращается.
Теперь на счет запроса. На стороне сервера есть вот такая проверка запросов:
Код
/* Is this an HTTP GET command? (only check the first 5 chars, since
      there are other formats for GET, and we're keeping it very simple )*/
      if ((buflen >=5) && (strncmp(buf, "GET /", 5) == 0))
      {
        /* Check if request to get ST.gif */
        if (strncmp((char const *)buf,"GET /STM32F2x7_files/ST.gif",27)==0)
        {...}  
        /* Check if request to get stm32.jpeg */
        else if (strncmp((char const *)buf,"GET /STM32F2x7_files/stm32.jpeg",31)==0)
        {...}
        else if (strncmp((char const *)buf,"GET /STM32F2x7_files/logo.jpg", 29) == 0)                                          
        {...}
        else if(strncmp(buf, "GET /STM32F2x7TASKS.html", 24) == 0)
        {...}


Корректно ли будет отправка такого запроса:
Код
char request[]="GET /STM32F2x7TASKS.html";

Мне вот хотя бы увидеть что клиент передает а сервер это воспринимает и отвечает.

В итоге пробовал это сделать вот так:

Код
struct netconn *conn, *newconn;
err_t err;
  
struct ip_addr local_ip_address = {0xc0a8000a}; //подствил адрес сервера так как его адрес не читался функцией netconn_getaddr

char request[]="GET /STM32F2x7TASKS.html";
    
  
  /* Create a new TCP connection handle */
  conn = netconn_new(NETCONN_TCP);
  
  if (conn!= NULL)
  {    
   // err = netconn_getaddr(conn, &local_ip_address, &port, 1);
    
    /* Bind to port 80 (HTTP) with default IP address */
    err = netconn_bind(conn, &local_ip_address, HTTP_PORT);
    
    if (err == ERR_OK)
    {
      err=netconn_write(conn, &request, 24, NETCONN_NOCOPY);
      
      /* Close the connection (server closes in HTTP) */
      netconn_close(conn);
    }
  }



netconn_bind проходит успешно. никакой ошибки не возвращается. А вот netconn_write возвращает ошибку (-8 - нет соединения).
В чем я ошибаюсь?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Kalyan   stm32f207+ethernet+xml   Jun 21 2012, 21:21
- - alx2   Цитата(Kalyan @ Jun 22 2012, 02:21) Подск...   Jun 22 2012, 04:56
- - Kalyan   alx2, спасибо за советы. Я их учел. протокол выбра...   Jun 22 2012, 06:18
|- - scifi   Цитата(Kalyan @ Jun 22 2012, 10:18) Но во...   Jun 22 2012, 06:47
|- - AlexandrY   Цитата(scifi @ Jun 22 2012, 09:47) Что ес...   Jun 22 2012, 07:11
- - Kalyan   Ситуация немного прояснилась. На МК мне надо реали...   Jun 22 2012, 08:12
|- - scifi   Цитата(Kalyan @ Jun 22 2012, 12:12) Может...   Jun 22 2012, 08:22
|- - AlexandrY   Цитата(scifi @ Jun 22 2012, 11:22) Гугл в...   Jun 22 2012, 08:53
|- - scifi   Цитата(AlexandrY @ Jun 22 2012, 12:53) Хо...   Jun 22 2012, 09:08
|- - AlexandrY   Цитата(Kalyan @ Jun 22 2012, 18:42) netco...   Jun 22 2012, 20:11
- - brag   тоже чесслово не понял, что за XML-запросы... А дл...   Jun 22 2012, 17:13
- - Aleksandr Baranov   Может, имеет смысл сначала потренироваться на созд...   Jun 22 2012, 20:52
|- - scifi   Цитата(Aleksandr Baranov @ Jun 23 2012, 00...   Jun 24 2012, 11:51
- - Kalyan   ЦитатаНу вы даете, похоже действительно вам трудно...   Jun 24 2012, 13:18
|- - scifi   Цитата(Kalyan @ Jun 24 2012, 17:18) На ск...   Jun 24 2012, 17:34
- - Kalyan   ЦитатаТак что при недостатке опыта логично использ...   Jun 24 2012, 18:04
|- - scifi   Цитата(Kalyan @ Jun 24 2012, 22:04) ок. С...   Jun 24 2012, 18:35
- - Kalyan   ЦитатаКстати, для отладки советую задействовать Wi...   Jun 24 2012, 19:07
|- - scifi   Цитата(Kalyan @ Jun 24 2012, 23:07) Тоест...   Jun 25 2012, 05:39
- - Kalyan   ЦитатаЯ именно так и делал. Рекомендую вот этот. ...   Jun 25 2012, 06:11
- - Aleksandr Baranov   Нужно: Создать соединение с IP адресом сервера чер...   Jun 25 2012, 12:53
- - Kalyan   ЦитатаНужно: Создать соединение с IP адресом серве...   Jun 26 2012, 09:59
|- - Aleksandr Baranov   Цитата(Kalyan @ Jun 26 2012, 05:59) ... Я...   Jun 26 2012, 16:29
- - andrewlekar   Да, Kalyan, плаваешь ты в теме знатно... Сделай лу...   Jun 28 2012, 05:52
- - coredumped   На сайте ST есть все примеры применения LWIP на ка...   Jun 28 2012, 08:03


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

 


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


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