mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-10-26 04:01:38 +01:00
Socket Utilities
This component provides simplified implementations of common socket-related utilities using lwIP and esp_netif. It is especially useful for porting Linux-based libraries to ESP32 where performance and memory constraints are secondary considerations.
Supported Functions
| API | Description | Limitations | Declared in |
|---|---|---|---|
ifaddrs() |
Retrieves interface addresses using esp_netif |
IPv4 addresses only | ifaddrs.h |
socketpair() *) |
Creates a pair of connected sockets using lwIP loopback stream sockets |
IPv4 sockets only | socketpair.h, sys/socket.h **) |
pipe() *) |
Wraps socketpair() to provide unidirectional pipe-like functionality |
Uses bidirectional sockets in place of true pipes | socketpair.h, unistd.h ***) |
getnameinfo() |
Converts IP addresses to human-readable form using lwIP's inet_ntop() |
IPv4 only; supports NI_NUMERICHOST and NI_NUMERICSERV flags only |
getnameinfo.h, netdb.h in ESP-IDF |
gai_strerror() |
Returns error code as a string | Simple numeric string representation only | gai_strerror.h, netdb.h **) |
gethostname() |
Returns lwip netif hostname | Not a system-wide hostname, but interface specific hostname | gethostname.h, unistd.h in ESP-IDF |
Notes:
*)socketpair()andpipe()are built on top oflwIPTCP sockets, inheriting the same characteristics. For instance, the maximum transmit buffer size is based on theTCP_SND_BUFsetting.**)socketpair()andgai_strerror()are declared in sock_utils header files, the declaration is propagated to ESP-IDF from v5.5 to the official header files. If you're using older IDF version, you need to manually pre-include related header files from the sock_utils public include directory.***)pipe()is declared in compiler'ssys/unistd.h.