Linux 拨号vps windows公众号手机端

linux中recvfrom怎么设置为非阻塞状态

lewis 8年前 (2017-09-04) 阅读数 9 #程序编程
文章标签 linux

在Linux中,可以通过设置套接字的属性来将recvfrom函数设置为非阻塞状态。以下是实现的步骤:
1. 创建套接字:

intsockfd=socket(AF_INET,SOCK_DGRAM,0);

2. 设置套接字为非阻塞模式:

intflags=fcntl(sockfd,F_GETFL,0);

  fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);

3. 使用recvfrom函数接收数据,此时recvfrom函数将以非阻塞模式工作:

  char buffer[1024];

  struct sockaddr_in client_addr;

  socklen_t addr_len = sizeof(client_addr);

  ssize_t num_bytes = recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr *)&client_addr, 

  &addr_len);

在非阻塞模式下,recvfrom函数将立即返回,无论是否有数据可读。如果没有数据可读,recvfrom函数将返回-1,并且errno将被设置为EAGAIN或EWOULDBLOCK。

版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门