socket connect阻塞和非阻塞處理
- 定義信號處理函數(shù)
//外面定義一個中斷信號處理函數(shù)u_alarm_handler,用于超時后的報警處理
void u_alarm_handler()
{
printf("connect time out \n");
}
//指定信號回調(diào)函數(shù)
sigset(SIGALRM, u_alarm_handler);
//定義一個2秒的定時器
alarm(2);
//服務(wù)器地址初始化
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);