いくつかのPythonドキュメントを除いて、これに関するドキュメントは見つかりませんでした
18.1.4.2. タイムアウトと accept メソッド
getdefaulttimeout()
でない場合None
、accept()
メソッドによって返されるソケットはそのタイムアウトを継承します。それ以外の場合、動作はリッスン ソケットの設定に依存します。リスニング ソケットがブロッキング モードまたはタイムアウト モードの場合、 によって返されるソケットは
accept()
ブロッキング モードです。リッスンしているソケットが非ブロック モードの場合、返されるソケットがブロック モードか非ブロック モードか
accept()
は、オペレーティング システムによって異なります。クロスプラットフォームの動作を確保したい場合は、この設定を手動でオーバーライドすることをお勧めします。
この [質問] を読みました:ソケット オプションは、リッスンしているソケットから accept() にわたって継承されますか? 、最終的には評決はまだ実装定義のままだと思います。プラットフォームでのテストは、各カーネルからソースを読み取るよりも簡単だと思います。
ここでは、タイムアウトオプションが継承されていることを明確に示しています。しかし、accept(2) のマンページには、これについての言及はありません。私のボックス (Embedded Linux ボックス) の 1 つでいくつかの C++ コードをデバッグしたとき、これは非常に衝撃的でした。受け入れられたソケットがこのオプションを継承しないことを期待していました。
この質問に対する決定的な答えはどこにありますか?