C语言socket编程中setsockopt设置超时时间对read无效

2024-12-05 03:45:48
推荐回答(2个)
回答(1):

不要用read,陆帆桥改用recv()函数进行接收试试看吧。
如果实早猛在没效果,把socket一开始就设置为非阻塞模式吧轿咐:
u_long mode = 1;
ioctlsocket(fd,FIONBIO,&mode);

回答(2):

Windows 环境下:
定义:int nNetTimeout=1000;//1 秒
//设置接收超时
setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&nNetTimeout,sizeof(int));

Linux 环境下:
定义:struct timeval timeout = {3,0};
//设团态缺闭粗置接收塌辩超时 
setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(struct timeval));