溫馨提示×

linux中recvfrom怎么設置為非阻塞狀態

小億
549
2023-11-28 14:42:43
欄目: 編程語言

在Linux中,可以通過設置套接字的屬性來將recvfrom函數設置為非阻塞狀態。以下是實現的步驟:
1. 創建套接字:

  int sockfd = socket(AF_INET, SOCK_DGRAM, 0);

2. 設置套接字為非阻塞模式:

  int flags = 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。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女