Use file readers and writers for sockets; factor out SOCKS5 address reading
Implement receiving UDP packets via recvfrom()