在使用 recv() 之前检查数据是否可用

Check if data is available before using recv()

有没有一种方法可以在单个套接字上使用 select(),而不涉及 fd_set?

我想确保在使用 recv() 之前有一些东西要阅读,这样它就不会阻塞。或者使用 recv() 如果它立即可以 return 当没有什么可读的时候。

很遗憾,没有。

在不涉及至少一个 fd_set 的情况下使用 select() 的唯一方法是向 select 提供 3 nullptrs (NULLs)使用 timeout 参数有效地将 select 调用转换为 sleep