如何等待从套接字接收数据

How to wait for receiving data from socket?

本文关键字:套接字 数据 何等待 等待      更新时间:2023-10-16

我在c++中创建了wait_for_data函数,但无法正常工作。

在以下代码中,numReady始终为true;为什么?

struct timeval selTimeout;
selTimeout.tv_sec = timeout / 1000;
selTimeout.tv_usec = (timeout % 1000) * 1000;
fd_set readSet;
FD_ZERO(&readSet);
FD_SET(sock, &readSet);
int numReady = select(sock + 1, &readSet, NULL, NULL, &selTimeout);
if (numReady>0) {
// reading data here
} else {
//finish
}

感谢

即使选择报告It就绪,套接字也可能被阻塞。为了避免这种阻塞,您应该在套接字上使用O_NONBLOCK。阅读手册页–mkaes