listen on a socket