Before calling connect, add a call to set the socket up as non-blocking: ULONG ulParam = 1; ioctlsocket(m_hSocket, FIONBIO, &ulParam); Then call connect as normal. After calling connect, you can do a select (writing) with whatever timeout you want to see if the socket has connected - if the socket can be written to it is connected. Regards, Simon