繁体   English   中英

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

[英]How to wait for receiving data from socket?

我在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
}

谢谢

即使select报告它准备就绪,套接字也可能会阻塞。 为了避免这种阻塞,您应该在套接字上使用O_NONBLOCK 阅读手册页 - mkaes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM