mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Socket: Add recvfrom method to receive UDP with source address. (#6103)
This commit is contained in:
		| @@ -86,6 +86,13 @@ class BSDSocketImpl : public Socket { | |||||||
|   } |   } | ||||||
|   int listen(int backlog) override { return ::listen(fd_, backlog); } |   int listen(int backlog) override { return ::listen(fd_, backlog); } | ||||||
|   ssize_t read(void *buf, size_t len) override { return ::read(fd_, buf, len); } |   ssize_t read(void *buf, size_t len) override { return ::read(fd_, buf, len); } | ||||||
|  |   ssize_t recvfrom(void *buf, size_t len, sockaddr *addr, socklen_t *addr_len) override { | ||||||
|  | #if defined(USE_ESP32) | ||||||
|  |     return ::recvfrom(this->fd_, buf, len, 0, addr, addr_len); | ||||||
|  | #else | ||||||
|  |     return ::lwip_recvfrom(this->fd_, buf, len, 0, addr, addr_len); | ||||||
|  | #endif | ||||||
|  |   } | ||||||
|   ssize_t readv(const struct iovec *iov, int iovcnt) override { |   ssize_t readv(const struct iovec *iov, int iovcnt) override { | ||||||
| #if defined(USE_ESP32) | #if defined(USE_ESP32) | ||||||
|     return ::lwip_readv(fd_, iov, iovcnt); |     return ::lwip_readv(fd_, iov, iovcnt); | ||||||
|   | |||||||
| @@ -31,6 +31,9 @@ class Socket { | |||||||
|   virtual int setsockopt(int level, int optname, const void *optval, socklen_t optlen) = 0; |   virtual int setsockopt(int level, int optname, const void *optval, socklen_t optlen) = 0; | ||||||
|   virtual int listen(int backlog) = 0; |   virtual int listen(int backlog) = 0; | ||||||
|   virtual ssize_t read(void *buf, size_t len) = 0; |   virtual ssize_t read(void *buf, size_t len) = 0; | ||||||
|  | #ifdef USE_SOCKET_IMPL_BSD_SOCKETS | ||||||
|  |   virtual ssize_t recvfrom(void *buf, size_t len, sockaddr *addr, socklen_t *addr_len) = 0; | ||||||
|  | #endif | ||||||
|   virtual ssize_t readv(const struct iovec *iov, int iovcnt) = 0; |   virtual ssize_t readv(const struct iovec *iov, int iovcnt) = 0; | ||||||
|   virtual ssize_t write(const void *buf, size_t len) = 0; |   virtual ssize_t write(const void *buf, size_t len) = 0; | ||||||
|   virtual ssize_t writev(const struct iovec *iov, int iovcnt) = 0; |   virtual ssize_t writev(const struct iovec *iov, int iovcnt) = 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user