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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> stm32f207+ethernet+xml, Как передавать XML запросы
scifi
сообщение Jun 24 2012, 17:34
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Kalyan @ Jun 24 2012, 17:18) *
На сколько я понял должно быть так (для киента):
...
После этого закрываем netconn_close(conn); /* Close the connection (server closes in HTTP) */

Насколько я знаю, lwip поддерживает 3 разных API: raw API, netconn API и sockets, причём самый простой API - это sockets. Так что при недостатке опыта логично использовать sockets. Утверждается, что там есть хорошая совместимость с BSD sockets, то есть примеров использования должно быть много.
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jun 24 2012, 18:04
Сообщение #17


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

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



Цитата
Так что при недостатке опыта логично использовать sockets. Утверждается, что там есть хорошая совместимость с BSD sockets, то есть примеров использования должно быть много.

ок. Спасибо, попробую.
Но все же правильно ли я понял написал последовательность функций с netconn API?:

1. conn = netconn_new(NETCONN_TCP); /* Create a new TCP connection handle */
2. err = netconn_bind(conn, &local_ip_address, HTTP_PORT); /* Bind to port 80 (HTTP) with default IP address */
3. netconn_connect(.....) /
4. netconn_write(conn, &request, 24, NETCONN_NOCOPY); // и отправили HTTP запрос
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 24 2012, 18:35
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Kalyan @ Jun 24 2012, 22:04) *
ок. Спасибо, попробую.
Но все же правильно ли я понял написал последовательность функций с netconn API?:
1. conn = netconn_new(NETCONN_TCP); /* Create a new TCP connection handle */
2. err = netconn_bind(conn, &local_ip_address, HTTP_PORT); /* Bind to port 80 (HTTP) with default IP address */
3. netconn_connect(.....) /
4. netconn_write(conn, &request, 24, NETCONN_NOCOPY); // и отправили HTTP запрос

Сам я netconn не пробовал. Но общеизвестно, что bind нужен для того, чтобы принимать входящие соединения, то есть для серверов. У вас клиент, он сам инициирует соединения, так что bind исключить.
Кстати, для отладки советую задействовать Wireshark. Правда, для отладки требуется понимание происходящего (оно пока на нуле, очевидно). Придётся подтянуться.
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jun 24 2012, 19:07
Сообщение #19


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

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



Цитата
Кстати, для отладки советую задействовать Wireshark

Спасибо. До этого момента меня мучал вопрос об отладке сего ужаса :-).
Тоесть я могу подключить шнурок к своей плате и к компу, запустить Wireshark, и он сможет показывать структуру HTTP пакетов?

А дополнительно на ПК не надо ставить HTTP сервер чтобы firmware отправляя netconn_connect(.....) подключалось к нему?

Сообщение отредактировал Kalyan - Jun 24 2012, 19:08
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 25 2012, 05:39
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Kalyan @ Jun 24 2012, 23:07) *
Тоесть я могу подключить шнурок к своей плате и к компу, запустить Wireshark, и он сможет показывать структуру HTTP пакетов?

Именно так. Он захватывает пакеты и представляет их в удобоваримом виде. Отличная вещь.

Цитата(Kalyan @ Jun 24 2012, 23:07) *
А дополнительно на ПК не надо ставить HTTP сервер чтобы firmware отправляя netconn_connect(.....) подключалось к нему?

Я именно так и делал. Рекомендую вот этот.
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jun 25 2012, 06:11
Сообщение #21


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

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



Цитата
Я именно так и делал. Рекомендую вот этот.


Огромное спасибо! Вот только ссылка не работает. (
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jun 25 2012, 12:53
Сообщение #22


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

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Нужно:
Создать соединение с IP адресом сервера через порт 80;
Передать туда HTTP header;
Начать принимать от сервера ответные строки и парсать их;
В нужный момент - послать то, что хочется послать;
Принять от сервера ответ;
Закрыть соединение.


--------------------
ASB
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Jun 26 2012, 09:59
Сообщение #23


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

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



Цитата
Нужно:
Создать соединение с IP адресом сервера через порт 80;
Передать туда HTTP header;
Начать принимать от сервера ответные строки и парсать их;
В нужный момент - послать то, что хочется послать;
Принять от сервера ответ;
Закрыть соединение.


Огромное вам спасибо! То что я искал!
И еще немного наводящих вопросов:
Цитата
Создать соединение с IP адресом сервера через порт 80;

Делаю это вот так:
Код
netconn_connect(conn, &local_ip_address, HTTP_PORT)

Цитата
Передать туда HTTP header;

Это делаю вот так:
Код
netconn_write(conn, &http_client_request, 24, NETCONN_NOCOPY); //send request

Цитата
Начать принимать от сервера ответные строки и парсать их;

И вот после отправки запроса серверу HTTP клиент надо перевести в прослушивание что бы уловить ответы. Наверное функцией:
netconn_listen()
А после этого наверное обратно надо перевести соединение на отправку и сделать это функцией
Код
netconn_connect(conn, &local_ip_address, HTTP_PORT)


Поправьте если я ошибаюсь....
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jun 26 2012, 16:29
Сообщение #24


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

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(Kalyan @ Jun 26 2012, 05:59) *
...

Я не настолько силен в lwIP, чтобы советовать, но, по-моему, вместо listen надо применять rcv. И вообще, лучше сокетами оперировать.

Сообщение отредактировал IgorKossak - Jun 26 2012, 16:49
Причина редактирования: бездумное цитирование


--------------------
ASB
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jun 28 2012, 05:52
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Да, Kalyan, плаваешь ты в теме знатно... Сделай лучше на компе серверный сокет и клиентский и погоняй между ними данные, а то пока у тебя полная чушь получается.
По теме, для клиентского соединения не нужно использовать ни bind, ни listen - это методы для сервера.
Go to the top of the page
 
+Quote Post
coredumped
сообщение Jun 28 2012, 08:03
Сообщение #26





Группа: Новичок
Сообщений: 2
Регистрация: 27-06-12
Из: Lugansk UA
Пользователь №: 72 537



На сайте ST есть все примеры применения LWIP на камешках STM32. Вот, например, для Cortex-M4: http://www.st.com/internet/com/SOFTWARE_RE...x7_eth_lwip.zip
Посмотрите примеры tcp_echo_client и tcp_echo_server - все вопросы сразу отпадут. Если у Вас другой МК, то искать надо страничку этого МК, закладочка "Design support", и по словам "LWIP TCP/IP stack demonstration". Есть исходники и аппнот (pdf) с описанием. Возьмите готовый проект и переделайте, не изобретайте колесо!

Сообщение отредактировал coredumped - Jun 28 2012, 08:05
Go to the top of the page
 
+Quote Post

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

 


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


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