如果可用,我正在调用读取函数来捕获接收到的数据包。当没有要获取的数据包时,我得到 errno EAGAIN,但是当网络断开连接时,我也得到 EAGAIN,所以我无法区分这两种情况。
while ( ((n = read(sockfd, &(buffer[pos]), 1)) > 0) and not messageFound) {
//reading byte by byte
if (n == 1) {
// Some stuff..
}
}
// Never returning 0, but when returning negative values:
if (n < 0){
qDebug()<< "Read error #" << errno << ": " << strerror(errno);
if(errno != EAGAIN){ // It is always this error, so it's never entering here
qDebug()<< "Disconnected. Reason #" << errno << ": " << strerror(errno);
*connected = false;
}
}
有什么方法可以检查套接字是否已断开连接,或者在调用 read 之前知道是否有可用的数据包?(我尝试使用 select 但似乎不起作用)