ソケットがタイムアウトしたかどうか、またはそれ以上のデータがない場合はどうすれば認識できますか?TCPソケットのタイムアウトまたは読み取るデータがありません
私はこれを持っている:
EWOULDBLOCK
または
EAGAIN
が設定されている場合、私はチェックしますが、タイムアウトが発生しなかった場合でも、彼らは設定された後
setsockopt(cli_socket, SOL_SOCKET, SO_RCVTIMEO, (struct timeval *)&tv, sizeof(struct timeval)); //5 sec timeout
while(1)
{
l = recv(socket, ...);
if(l < 0)
break;
}
。接続がタイムアウトしたか、正常に読み込まれたかによって、別のアクションを実行する必要があります。
"タイムアウトが発生しなくても設定されています"とはどういう意味ですか?それらが何であるかは 'errno'の値であり、それらは等しくないので、それらはいつでも*設定することはできません。 –
私はいつもif条件に陥ることを意味します。でも、私はしたくないです。 – lllook
しかし、それは 'errno == EWOULDBLOCK'か' errno == EAGAIN'とはまったく違うものです。 –