Linux下socket发送接收超时值的获取与设置

一、 SO_RCVTIMEO和SO_SNDTIMEO套接口选项说明

     1.  这两个选项给套接字的接收和发送设置一个超时值。注意,访问函数的参数是指向timeval结构的指针。
     2.  通过设置值为0秒和0微秒禁止超时。缺省情况下,两个超时都是禁止的

二、 SO_RCVTIMEO的正确使用方法

1.  获取接收的超时值

socklen_t optlen = sizeof(struct timeval);

struct timeval tv;

getsockopt(socketfd, SOL_SOCKET,SO_RCVTIMEO, &tv, &optlen); 


2. 设置接收的超时值

socklen_t optlen = sizeof(struct timeval);

struct timeval tv;

tv.tv_sec = 10; tv.tv_usec = 0;

setsockopt(socketfd, SOL_SOCKET, SO_RCVTIMEO, &tv, optlen);

补充:

SO_SNDTIMEO的获取和设置与SO_RCVTIMEO的类似。

在使用的过程中要检查getsockopt和setsockopt函数的返回值,0表示成功,-1表示失败。

一个新创建的socket默认是阻塞的,就可以通过设置超时来获得返回,因为默认的socket发送和接收的超时timeval的两个成员tv_sec和tv_usec都是0,表明永不超时。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值