質問があります
指定された時間内にクライアントがサーバーに応答しなかったかどうかを知る方法は?!
選択機能ではなくスレッドを使用しています。
あなたの助けは大歓迎です:)
ありがとうございました。
質問があります
指定された時間内にクライアントがサーバーに応答しなかったかどうかを知る方法は?!
選択機能ではなくスレッドを使用しています。
あなたの助けは大歓迎です:)
ありがとうございました。
次のように[ソケットオプションの設定][1]を調べる必要があります。
setsockopt(sockid, SOL_SOCKET, SO_RCVTIMEO,(char *)&tv,sizeof(struct timeval));
SOCKET_ERROR
これが完了したら、受信および/または送信関数を呼び出すときに再度確認できます。特定のエラー コードは、 を呼び出して取得できますWSAGetLastError
。
これは、潜在的なエラー コードの 1 つです。
WSAEWOULDBLOCK 10035
リソースが一時的に利用できません。
このエラーは、ソケットから読み取るデータがキューに入れられていない場合の recv など、すぐに完了できない非ブロッキング ソケットの操作から返されます。これは致命的ではないエラーであり、後で操作を再試行する必要があります。非ブロッキング SOCK_STREAM ソケットで connect を呼び出した結果として WSAEWOULDBLOCK が報告されるのは正常です。これは、接続が確立されるまでに時間がかかるためです。