可能であれば、受信したパケットをキャッチするために read 関数を呼び出しています。取得するパケットがない場合、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で試しましたが、うまくいかないようです)