Implementing Socket Connect() and Socket.Accept() timeout methods