一般的に言えば、ソケット (TCP) はデータの受信に recv を使用します。カーネル キャッシュにデータがない場合はブロックされます。
TCP 接続が切断されていないが、相手がデータを送信しない場合、recv 関数呼び出しはプログラムを永久にブロックしますか?
ソケットは、ブロッキングと非ブロッキングの 2 つのタイプに分けられます。デフォルトのブロッキング モードは、パラメーター設定によって非ブロッキングに変更できます。 ブロッキングの意味: 実際には、TCP/IP プロトコル スタック内のバッファーです。 1) ブロッキング モード: バッファーにデータがない場合は、データが返されるまで待機します (2) 非ブロッキング モード: データがない場合は、パラメーターがすぐに返されます。 Python では例外がスローされます)
setsockopt() 関数を使用してタイムアウト期間を設定できます
ソケットは、ブロッキングと非ブロッキングの 2 つのタイプに分けられます。デフォルトのブロッキング モードは、パラメーター設定によって非ブロッキングに変更できます。
ブロッキングの意味: 実際には、TCP/IP プロトコル スタック内のバッファーです。 1) ブロッキング モード: バッファーにデータがない場合は、データが返されるまで待機します
(2) 非ブロッキング モード: データがない場合は、パラメーターがすぐに返されます。 Python では例外がスローされます)
setsockopt() 関数を使用してタイムアウト期間を設定できます