Good idea as such, however, I want to keep cost and complexity down. Ended up reading from i2c and uart, accepting new tcp connection, adding new connection to a list (socket, address-port tuple)), looping through every tcp connection and sending the message. If sending fails, remove that particular (socket, addr) from list and close socket. It works well, and all without threads. It looks that the speed is good enough, and I'm not losing any packets. Thanks!