uIP 1.0
Макросы | Функции
Функции приложения uIP
The uIP TCP/IP stack

Функции, используемые в приложении, работающем поверх uIP. Подробнее...

Макросы

#define uip_datalen()
 Длина любых пришедшик данны, которые в настоящий момент доступны (если доступны) в буфере uip_appdata.
#define uip_urgdatalen()
 Длина любых данные вне диапазона (out-of-band data, или urgent data, т.
#define uip_close()
 Закрывает текущее соединение.
#define uip_abort()
 Обрыв (Abort) текущего соединения.
#define uip_stop()
 Говорит посылающему данные хосту, что нужно остановить отправку данных.
#define uip_stopped(conn)
 Проверяет, было ли текущее соединение ранее остановлено вызовом uip_stop().
#define uip_restart()
 Перезапускает текущее соединение, если оно было ранее остановлено вызовом uip_stop().
#define uip_udpconnection()
 Текущее соединение является соединением UDP?
#define uip_newdata()
 Есть ли новые данные?
#define uip_acked()
 Были ли подтверждены ранее отправленные данные?
#define uip_connected()
 Соединение все еще установлено?
#define uip_closed()
 Было ли соединение закрыто на дальнем конце?
#define uip_aborted()
 Было ли соединение оборвано (aborted) на другом конце?
#define uip_timedout()
 Истек ли таймаут на соединении?
#define uip_rexmit()
 Нужно ли отправить заново ранее посланные данные?
#define uip_poll()
 Соединение опрашивается от uIP?
#define uip_initialmss()
 Получает максимальный начальный размер сегмента (MSS) текущего соединения.
#define uip_mss()
 Получает текущий максимальный размер сегмента, который может быть отправлен через текущее соединение.
#define uip_udp_remove(conn)
 Удаляет соединение UDP.
#define uip_udp_bind(conn, port)
 Привязка соединения UDP к локальному порту.
#define uip_udp_send(len)
 Отправляет датаграмму UDP длиной len через текущее соединение.

Функции

void uip_listen (u16_t port)
 Запуск прослушивания указанного порта.
void uip_unlisten (u16_t port)
 Остановить прослушивание указанного порта.
struct uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t port)
 Соединение с дальним хостом (remote host), используя TCP.
void uip_send (const void *data, int len)
 Посылает данные через текущее соединение.
struct uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Устанавливает новое соединение UDP.

Подробное описание

Функции, используемые в приложении, работающем поверх uIP.


Макросы

#define uip_abort ( )

Обрыв (Abort) текущего соединения.

Эта функция оборвет (сбросит) текущее соедиение, что обычно используется, когда случилась ошибка, что не дает право использовать функцию uip_close().

Примеры:
webclient.c.

См. определение в файле uip.h строка 576

#define uip_aborted ( )

Было ли соединение оборвано (aborted) на другом конце?

Не 0, если текущее было оборвано (сброшено) по инициативе remote host.

Примеры:
smtp.c, telnetd.c и webclient.c.

См. определение в файле uip.h строка 674

#define uip_acked ( )

Были ли подтверждены ранее отправленные данные?

Вернет не 0, если ранее посланные данные были подтверждены стороной remote host. Это означает, что приложение может послать новые данные.

Примеры:
telnetd.c и webclient.c.

См. определение в файле uip.h строка 642

#define uip_close ( )

Закрывает текущее соединение.

Эта функция должным образом закроет текущее соединение.

Примеры:
telnetd.c.

См. определение в файле uip.h строка 566

#define uip_closed ( )

Было ли соединение закрыто на дальнем конце?

Не 0, если соединение было закрыто по инициативе remote host. Если это так, то приложение может сделать необходимые очистки.

Примеры:
smtp.c, telnetd.c и webclient.c.

См. определение в файле uip.h строка 664

#define uip_connected ( )

Соединение все еще установлено?

Вернет не 0, если текущее соедиение еще работает, и подключено к remote host. Это случится в обоих случаях, если соединение активно открыто (вызовом uip_connect()) или пассивно открыто (вызовом uip_listen()).

Примеры:
hello-world.c, telnetd.c и webclient.c.

См. определение в файле uip.h строка 654

#define uip_datalen ( )

Длина любых пришедшик данны, которые в настоящий момент доступны (если доступны) в буфере uip_appdata.

Перед этим может быть использована функция uip_data(), чтобы проверить, есть ли вообще доступные данные.

Примеры:
dhcpc.c, telnetd.c и webclient.c.

См. определение в файле uip.h строка 545

#define uip_mss ( )

Получает текущий максимальный размер сегмента, который может быть отправлен через текущее соединение.

Такущий максимальный размер сегмента, который можно отправить на соединении, вычисляется на основе окна прием и MSS соединения (которое также доступно через вызов uip_initialmss()).

Примеры:
telnetd.c и webclient.c.

См. определение в файле uip.h строка 729

#define uip_newdata ( )

Есть ли новые данные?

Вернет не 0, если для приложения имеются новые данные, которые представлены по указателю. Размер доступных данных можно узнать по значению переменной uip_len.

Примеры:
dhcpc.c, resolv.c, telnetd.c и webclient.c.

См. определение в файле uip.h строка 632

#define uip_poll ( )

Соединение опрашивается от uIP?

Не 0, если причина вызова приложения в том, что соединение было неактивно некоторое время, и должно быть опрошено.

Событие опроса (polling event) может быть использовано для отправки данных без ожидания, что remote host отправит данные.

Примеры:
resolv.c, telnetd.c и webclient.c.

См. определение в файле uip.h строка 709

#define uip_restart ( )

Перезапускает текущее соединение, если оно было ранее остановлено вызовом uip_stop().

Эта функция снова откроет окно приема, что приведет к возобновлению приема данных на текущем соединении.

См. определение в файле uip.h строка 604

#define uip_rexmit ( )

Нужно ли отправить заново ранее посланные данные?

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

Примеры:
telnetd.c и webclient.c.

См. определение в файле uip.h строка 696

#define uip_stop ( )

Говорит посылающему данные хосту, что нужно остановить отправку данных.

Эта функция закроет окно приема, чем приведет к остановке приема данных для текущего соединения.

См. определение в файле uip.h строка 586

#define uip_timedout ( )

Истек ли таймаут на соединении?

Не 0, если текущее соединение было оборвано из за слишком большого количества ретрансмиссий.

Примеры:
smtp.c, telnetd.c и webclient.c.

См. определение в файле uip.h строка 684

#define uip_udp_bind (   conn,
  port 
)

Привязка соединения UDP к локальному порту.

Аргументы:
connУказатель на структуру uip_udp_conn для соединения.
portНомер локального порта с сетевым порядком байт.
Примеры:
dhcpc.c.

См. определение в файле uip.h строка 777

#define uip_udp_remove (   conn)

Удаляет соединение UDP.

Аргументы:
connУказатель на структуру uip_udp_conn для соединения.
Примеры:
resolv.c.

См. определение в файле uip.h строка 766

Используется в resolv_conf().

#define uip_udp_send (   len)

Отправляет датаграмму UDP длиной len через текущее соединение.

Эта функция может быть вызвана только в ответ на событие UDP (опроса или поступления новых данных). Данные должны быть представлены в буфере uip_buf, в том месте, на которое указывает указатель uip_appdata.

Аргументы:
lenДлина данных в буфере uip_buf.
Примеры:
resolv.c.

См. определение в файле uip.h строка 790

#define uip_udpconnection ( )

Текущее соединение является соединением UDP?

Эта функция проверяет, является ли текущее соединение соединением UDP.

См. определение в файле uip.h строка 621

#define uip_urgdatalen ( )

Длина любых данные вне диапазона (out-of-band data, или urgent data, т.

е. данные, требующие срочной доставки), которые поступили на соединении.

Заметки:
Чтобы эта функция была разрешена, должен быть установлен конфигурационный параметр UIP_URGDATA.

См. определение в файле uip.h строка 557


Функции

struct uip_conn* uip_connect ( uip_ipaddr_t *  ripaddr,
u16_t  port 
) [read]

Соединение с дальним хостом (remote host), используя TCP.

Эта функция используется для запуска нового соединения с указанным портом указанного хоста. Она выделяет новый идентификатор соединения, устанавливает соединение в состояние SYN_SENT и устанавливает таймер ретрансмиссии в 0. Это приведет к тому, что будет передан сегмент TCP SYN в следующий раз, когда это соединение будет периодически обработано, что будет сделано обычно через 0.5 секунд после вызова uip_connect().

Заметки:
Эта функция доступна, только если активна поддержка активного открытого соединения путем задания UIP_ACTIVE_OPEN на значение 1 в файле uipopt.h.
Поскольку эта функция ожидает номер порта с сетевым порядком байт, то при необходимости должно быть применено преобразование HTONS() или htons().
 uip_ipaddr_t ipaddr;

 uip_ipaddr(&ipaddr, 192,168,1,2);
 uip_connect(&ipaddr, HTONS(80));
Аргументы:
ripaddrIP-адрес для remote hot.
port16-битный номер порта с сетевым порядком байт.
Возвращает:
Указатель на идентификатор соединения uI для нового соединения, или NULL, если не может быть выделено новое соединение.
Примеры:
smtp.c и webclient.c.

См. определение в файле uip.c строка 404

Перекрестные ссылки htons(), uip_conn::initialmss, uip_conn::len, uip_conn::lport, uip_conn::mss, uip_conn::nrtx, uip_conn::ripaddr, uip_conn::rport, uip_conn::rto, uip_conn::sa, uip_conn::snd_nxt, uip_conn::sv, uip_conn::tcpstateflags, uip_conn::timer, UIP_CONNS, uip_ipaddr_copy, UIP_RTO и UIP_TCP_MSS.

Используется в webclient_get().

void uip_listen ( u16_t  port)

Запуск прослушивания указанного порта.

Заметки:
Поскольку эта функция ожидает номер порта с сетевым порядком байт, то при необходимости должно быть применено преобразование HTONS() или htons().
Аргументы:
port16-битный номер порта с сетевым порядком байт.
Примеры:
hello-world.c и telnetd.c.

См. определение в файле uip.c строка 526

Перекрестные ссылки UIP_LISTENPORTS.

void uip_send ( const void *  data,
int  len 
)

Посылает данные через текущее соединение.

Эта функция используется для отправки одного сегмента данных TCP. Могут отправлять данные только приложения, которые были вызваны из uIP для обработки события.

Количество данных, которое было на самом деле отправлено после вызова этой функции, определяется максимальным количеством данны, которое позволяет TCP. uIP автоматически будет урезать данные, так чтобы было отправлено допустимое количество. Может быть использована фукнция uip_mss(), чтобы запросить у uIP количество данных, которое будет отправлено в действительности.

Заметки:
Эта функция не дает гарантии, что посылаемые данные дойдут до получателя. Если данные будут потеряны в сети, приложение будет вызвано с установленным событием uip_rexmit(). Затем приложение заново отправит данные, используя эту фукнцию.
Аргументы:
dataУказатель на данные для отправки.
lenМаксимальное количество данных для отправки.
Примеры:
dhcpc.c, telnetd.c и webclient.c.

См. определение в файле uip.c строка 1861

Перекрестные ссылки uip_conn::len.

struct uip_udp_conn* uip_udp_new ( uip_ipaddr_t *  ripaddr,
u16_t  rport 
) [read]

Устанавливает новое соединение UDP.

Эта функция устанавливает новое соединение UDP. Функция автоматически выделит неиспользуемый локальный порт для нового соединения. Однако может быть выбран другой порт с помощью вызова uip_udp_bind() после того, как была вызвана функция uip_udp_new().

Пример:

 uip_ipaddr_t addr;
 struct uip_udp_conn *c;
 
 uip_ipaddr(&addr, 192,168,2,1);
 c = uip_udp_new(&addr, HTONS(12345));
 if(c != NULL) {
   uip_udp_bind(c, HTONS(12344));
 }
Аргументы:
ripaddrIP-адрес для remote host.
rportНомер порта remote host с сетевым порядком байт.
Возвращает:
Структура uip_udp_conn для нового соединения или NULL, если не может быть выделено соединение.
Примеры:
dhcpc.c и resolv.c.

См. определение в файле uip.c строка 470

Перекрестные ссылки HTONS, htons(), uip_udp_conn::lport, uip_udp_conn::ripaddr, uip_udp_conn::rport, uip_udp_conn::ttl, uip_ipaddr_copy, UIP_TTL и UIP_UDP_CONNS.

Используется в resolv_conf().

void uip_unlisten ( u16_t  port)

Остановить прослушивание указанного порта.

Заметки:
Поскольку эта функция ожидает номер порта с сетевым порядком байт, то при необходимости должно быть применено преобразование HTONS() или htons().
Аргументы:
port16-битный номер порта с сетевым порядком байт.

См. определение в файле uip.c строка 515

Перекрестные ссылки UIP_LISTENPORTS.