linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别

编程知识 更新时间:2023-04-06 23:16:16

UDP的socket在某些情况:如对方关闭时,本地可能sendto不出去数据,然后recvfrom就会被阻塞,这时就需要设置 这两个参数的值提高程序质量。

linux:

    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");

   }

windows:

int timeout = 3000; //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));


http://idsips.blog.163/blog/static/4800127220116611500538/


更多推荐

linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别

本文发布于:2023-04-06 23:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/5a2ef2202b4be8b8a08bdc89aff263fb.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:区别   参数   windows   linux   setsockopt

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 51324文章数
  • 14阅读数
  • 0评论数