gpt4 book ai didi

c - 使用 poll select 或 epoll 了解 udp 数据包大小

转载 作者:行者123 更新时间:2023-11-30 18:00:58 25 4
gpt4 key购买 nike

我知道要在读取之前找出 udp 数据包的大小,您可以向内核发出此系统调用:

ioctl(s,FIONREAD,&num_bytes);

但是,我可以通过以下系统调用之一找到相同的结果吗?

poll()
select()
epoll()

关键是在读取数据报之前知道数据报的大小,为缓冲区分配空间。这仅适用于 Linux,使用 C 语言。

最佳答案

多路复用系统调用如 pollselect 期望观察一组条件(例如 fd #5 上可以输入,fd #7 上可以输出)并告诉您哪些文件描述符是可读的(以及哪些是可写的, ETC。)。一旦您知道可以读取哪个文件描述符,您就可以在该可读文件描述符 fd 上使用 ioctl(fd, FIONREAD, &numbytes)。因此,您应该同时使用 pollFIONREAD ...

关于c - 使用 poll select 或 epoll 了解 udp 数据包大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com