mirror of
				https://github.com/espressif/esp-protocols.git
				synced 2025-11-03 16:11:37 +01:00 
			
		
		
		
	Adding a reverse dependency to lwip and define macros, which enable declarations of socketpair() and gai_strerror() in standard heders (sys/socket.h and netdb.h)
		
			
				
	
	
	
		
			2.4 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			2.4 KiB
		
	
	
	
	
	
	
	
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.