首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

socket的recv阻塞可不可以设置阻塞超时时间

发布网友

我来回答

1个回答

热心网友

当然可以。参考代码:

struct timeval timeout={3,0};//3s
int
ret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));

int
ret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));

如果ret==0 则为成功,-1为失败,这时可以查看errno来判断失败原因
int
recvd=recv(sock_fd,buf,1024,0);
if(recvd==-1&&errno==EAGAIN)

{
printf("timeout\n");
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com