|
stm32f207+ethernet+xml, Как передавать XML запросы |
|
|
|
Jun 24 2012, 18:04
|
Частый гость
 
Группа: Свой
Сообщений: 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 запрос
|
|
|
|
|
Jun 24 2012, 18:35
|
Гуру
     
Группа: Свой
Сообщений: 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. Правда, для отладки требуется понимание происходящего (оно пока на нуле, очевидно). Придётся подтянуться.
|
|
|
|
|
Jun 24 2012, 19:07
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656

|
Цитата Кстати, для отладки советую задействовать Wireshark Спасибо. До этого момента меня мучал вопрос об отладке сего ужаса :-). Тоесть я могу подключить шнурок к своей плате и к компу, запустить Wireshark, и он сможет показывать структуру HTTP пакетов? А дополнительно на ПК не надо ставить HTTP сервер чтобы firmware отправляя netconn_connect(.....) подключалось к нему?
Сообщение отредактировал Kalyan - Jun 24 2012, 19:08
|
|
|
|
|
Jun 25 2012, 05:39
|
Гуру
     
Группа: Свой
Сообщений: 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(.....) подключалось к нему? Я именно так и делал. Рекомендую вот этот.
|
|
|
|
|
Jun 25 2012, 06:11
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656

|
Цитата Я именно так и делал. Рекомендую вот этот. Огромное спасибо! Вот только ссылка не работает. (
|
|
|
|
|
Jun 25 2012, 12:53
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Нужно: Создать соединение с IP адресом сервера через порт 80; Передать туда HTTP header; Начать принимать от сервера ответные строки и парсать их; В нужный момент - послать то, что хочется послать; Принять от сервера ответ; Закрыть соединение.
--------------------
ASB
|
|
|
|
|
Jun 26 2012, 09:59
|
Частый гость
 
Группа: Свой
Сообщений: 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) Поправьте если я ошибаюсь....
|
|
|
|
|
Jun 26 2012, 16:29
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(Kalyan @ Jun 26 2012, 05:59)  ... Я не настолько силен в lwIP, чтобы советовать, но, по-моему, вместо listen надо применять rcv. И вообще, лучше сокетами оперировать.
Сообщение отредактировал IgorKossak - Jun 26 2012, 16:49
Причина редактирования: бездумное цитирование
--------------------
ASB
|
|
|
|
|
Jun 28 2012, 08:03
|
Группа: Новичок
Сообщений: 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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|