/*****************************************************
* 与网络加密机建立socket连接
******************************************************/
int sec_conn(int addr)
{
   struct sockaddr_in dest_addr;
   int sockfd = -1;
   int retval;
   fd_set allset;
   struct timeval tv;   InitSocket( );
   sockfd = socket(AF_INET, SOCK_STREAM, 0);
   if (sockfd < 0) {

   /************************YANCP**********************/
   int iWinsockErr = WSAGetLastError( ) ;
   printf( "%d error when create listen socket !" , iWinsockErr ) ;
   /***************************************************/
   
      return -1;
   }
  
   memset((char *)&dest_addr, 0, sizeof(struct sockaddr_in));
   dest_addr.sin_family = AF_INET;
   dest_addr.sin_port = htons(SEC_PORT);
   dest_addr.sin_addr.s_addr = addr;
   
   /****************Yancp注释*************************/
   //if(fcntl(sockfd, F_SETFL, O_NONBLOCK) == -1)
   // return -1;   retval = connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr));
  if(retval<0) {
#ifdef DUMP
//printf("×与加密机连接失败×\n\n");
#endif
FD_ZERO(&allset);
    FD_SET(sockfd, &allset);
    tv.tv_sec = SEC_TIMEOUT;
    tv.tv_usec = 0;
 
if(select(sockfd + 1, NULL, &allset, NULL, &tv) <= 0) {
    return -1;
    }
    RtcsInitTcp(sockfd);
    return sockfd; 
 }
    
   RtcsInitTcp(sockfd);
   return sockfd; 
}我的环境如下:xp sp2,vc6.0很令人不解的是老是在retval = connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr));发生问题,也就是connect的返回值永远都小于0.可是在公司其他人的两台机器上一台2000,一台xp上都顺利通过,不知道是我得系统问题还是其他问题?