socket

socket connect阻塞和非阻塞处理

  1. 定义信号处理函数
  //外面定义一个中断信号处理函数u_alarm_handler,用于超时后的报警处理
  void u_alarm_handler()
  {
      printf("connect time out \n");
  }
  
  //指定信号回调函数
  sigset(SIGALRM, u_alarm_handler);
  //定义一个2秒的定时器
  alarm(2);

  //服务器地址初始化
  memset(&server_addr, 0, sizeof(struct sockaddr_in));
  server_addr.sin_family = AF_INET;
  server_addr.sin_addr.s_addr = inet_addr(ip);
  server_addr.sin_port = htons(port);

  ret = connect(clientfd, (struct sockaddr*)&server_addr, server_len);
  if(ret < 0)
  {
      return -1;
  }
  
  alarm(0);
  sigrelse(SIGALRM);

你可能感兴趣的:(socket)