socket connect阻塞和非阻塞处理
- 定义信号处理函数
//外面定义一个中断信号处理函数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);
网友评论