socket的recv阻塞可不可以设置阻塞超时时间
发布网友
发布时间:2022-04-22 03:46
我来回答
共1个回答
热心网友
时间:2023-11-11 12:31
当然可以。参考代码:
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");
}