BOOL ConnectAndSetSocketTimeOut(SOCKET sock,const CString &strIP,int port)
{
int result;
unsigned long ul = 1;
result = ioctlsocket(sock, FIONBIO, (unsigned long*)&ul);
if(result==SOCKET_ERROR)
{
::closesocket(sock);
return FALSE;
}
sockaddr_in serveraddr;
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(port);
serveraddr.sin_addr.S_un.S_addr = inet_addr(strIP);
connect(sock,(sockaddr*)&serveraddr,sizeof(serveraddr));
struct timeval timeout ;
fd_set r;
FD_ZERO(&r);
FD_SET(sock, &r);
timeout.tv_sec = 1;
timeout.tv_usec =0;
result = select(0, 0, &r, 0, &timeout);
if ( result <= 0 )
{
::closesocket(sock);
return FALSE;
}
ul= 0 ;
result = ioctlsocket(sock, FIONBIO, (unsigned long*)&ul);
if(result==SOCKET_ERROR)
{
::closesocket (sock);
return FALSE;
}
return TRUE;
}