質問はそれをすべて言います。ソケットをnullに設定するだけでなく、「.close()」メソッドを使用する方が良いですか? しかし、「.close()」メソッドが例外をスローすることはできません。そのときは、null に設定できますか?
ソケットを閉じたら、".close()" を呼び出した後、安全な方法でソケットを null に設定します。同じソケットを別の接続で再利用できますか? または、まったく新しいソケットを再作成する必要がありますか。
質問はそれをすべて言います。ソケットをnullに設定するだけでなく、「.close()」メソッドを使用する方が良いですか? しかし、「.close()」メソッドが例外をスローすることはできません。そのときは、null に設定できますか?
ソケットを閉じたら、".close()" を呼び出した後、安全な方法でソケットを null に設定します。同じソケットを別の接続で再利用できますか? または、まったく新しいソケットを再作成する必要がありますか。
質問は無意味です。変数を null に設定しても、ソケットが GC の対象になる可能性があることを除いて、ソケットには何もしません。ソケットを閉じたい場合は、それを閉じるか、出力ストリームをラップした最も外側の出力ストリームまたはライターを閉じてください。これが例外をスローする可能性があるという事実は、あなたを思いとどまらせてはなりません。
しかし、「.close()」メソッドが例外をスローすることはできません
可能性があるので、try/catch にも close() をラップします。close() が失敗した場合は、失敗しても問題ありません。作成しnull
て続行します。
ソケットを閉じたら、".close()" を呼び出した後、安全な方法でソケットを null に設定します。同じソケットを別の接続で再利用できますか? または、まったく新しいソケットを再作成する必要がありますか。
ソケットを閉じると、ソケットの InputStream と OutputStream も閉じられます。ソケットが閉じられると、それ以上ネットワークを使用することはできません (つまり、再接続または再バインドすることはできません)。新しいソケットを作成する必要があります。
はい、ソケットをnullに設定する前にソケットを閉じることをお勧めします。例外をスローするかどうかに関係なく、close を呼び出した後に null に設定しても安全だと思います。閉じる前に null に設定すると、ソケットはまだ存在し、後で jvm によって不明な時点で破棄されるまでポートを占有します。
はい、閉じた後に新しいソケットを作成する必要があります。