Not sure if you still using this code but here is one problem I see:
bool EClientSocket::handleSocketError()
should start with:
errno = WSAGetLastError();
Otherwise errno is still zero and all the checks of errno in this method are actually not checking anything.