ソケットを作成するとすぐにアプリケーションが一時的にクラッシュするのを防ぐ方法はありますか? このプログラムは、接続を受信するとすぐにフリーズを解除しますが、ユーザーに誤解を与える可能性があります。
ソケット作成メソッドなどをスレッドに入れてそこから実行してみましたがうまくいきませんでした。
編集:ソケットに一定の時間を与えてから、有効期限が切れたら切断することが実現可能でない限り?
別のスレッドで実行するのが正しい方法です。なぜなら、Socket.accept() 呼び出しはブロックされているからです (つまり、呼び出したスレッドが接続を取得するまでブロックされます)。
スレッド アーキテクチャに何か問題があるはずです。いくつかのコードを投稿してください。正確に何を伝えることができるかもしれません。
編集: ソケットに短いタイムアウトを与えると、ブロックが回避されないか、誰かが接続する前にタイムアウトになりますが、タイムアウト前に接続を取得しても、現在のセットアップと何の違いもありません。
java.io
プログラムはクラッシュしません。ライブラリがブロックされているため、接続を待っているだけです。
接続を待機しないようにするには、非ブロッキングjava.nio
クラスを使用するか、新しいスレッドを開始してThread
、この新しいスレッドを接続を待機するスレッドにすることができます。