Попробуй функцию select. Почитай о ней в SDK
Используются NONBLOCKING сокеты
SOCKET s;
struct sockaddr_in saddr;
struct timeval tv;
fd_set readfds,writefds,exceptfds;
int retv;
unsigned long opt=1;
unsigned long retioctl;
saddr.sin_family=AF_INET;
saddr.sin_port=htons(33234);
saddr.sin_addr.S_un.S_addr=inet_addr("196.85.202.99");
if((s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET){
MessageBox(0,"Cant create socket","Error",MB_ICONERROR);
}
if(WSAIoctl(s,FIONBIO,&opt,4,NULL,0,&retioctl,0,0)==SOCKET_ERROR){
MessageBox(0,"Iocstt","Error",0);
};
connect(s,(sockaddr *)&saddr,sizeof(saddr));
FD_ZERO(&readfds);
FD_SET(s,&readfds);
writefds=readfds;
exceptfds=readfds;
tv.tv_sec=1;
tv.tv_usec=0;
int ret;
ret=select(0,&readfds,&writefds,&exceptfds,&tv);
if(ret==0){
MessageBox(0,"TimeOut","Error",0);
}
closesocket(s);
WSACleanup();
|