close

  WSADATA   wsaData; 
  SOCKET   sock; 
  struct   fd_set   mask; 
  struct   timeval   timeout; 
  unsigned   long   flag=1; 
                    SOCKADDR_IN   blah; 
  if   (WSAStartup(MAKEWORD(1,1),&wsaData))   { 
  printf("Winsock   Initialization   failed.\n"); 
  return   -1; 
  } 
  blah.sin_family   =   AF_INET; 
  blah.sin_port   =   htons(80); 
  blah.sin_addr.s_addr=   inet_addr("192.168.0.1"); 
  sock   =   socket(AF_INET,SOCK_STREAM,0); 
  if   ((sock=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)   { 
  printf("Can   not   create   socket.\n"); 
  return   -2; 
  } 
  //设置套接字为非阻塞模式 
  if   (ioctlsocket(sock,FIONBIO,&flag)!=0)   { 
  printf("ioctlsocket   error:   %s\n",WSAGetLastError()); 
  closesocket(sock); 
  return   -3; 
  } 
  connect(sock,(struct   sockaddr*)&blah,sizeof(blah)); 
  timeout.tv_sec=3;   //   超时限制为2秒 
  timeout.tv_usec=0;     
  FD_ZERO(&   mask);   //清空集合mask   
  FD_SET(sock,&   mask);   //将sockfd放入集合mask中   
  switch(select(sock+1,NULL,&mask,NULL,&timeout)) 
  { 
  case   -1:   { 
  printf("select   error!\n"); 
  closesocket(sock); 
  return   -4; 
    } 
                  case   0:   { 
  closesocket(sock); 
printf("time   out!\n"); 
  return; 
  }//如果超时

轉自 : http://topic.csdn.net/t/20020428/16/686125.html



arrow
arrow
    全站熱搜
    創作者介紹
    創作者 gordenhao 的頭像
    gordenhao

    高登

    gordenhao 發表在 痞客邦 留言(0) 人氣()