いただきたいのですが、可能でIO例外が作成したサーバソケットにJava?
-
21-09-2019 - |
質問
私は、以下のコード:
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
このコードからの引用 java.sun.com.
私はいくつかの質問に関する上記の指定されたshortのコードです。
なぜいたく、IOException.いるもののIOExceptionができるものが利用する場合は、入力-出力方法なネットワーク方法
はどう違うのは、"システム。err.println"および"システム。println"?
をキャッチ決して"です。何ですか?なお問い合わせ頂いた後?
解決
1:なぜ私たちはIOExceptionがキャッチしたいです。私にIOExceptionが、我々は、入力・出力方法(ないネットワーキングメソッド)を使用する場合に発生することが何かあるといえます。
ネットワークは、入力/出力されます。バイトは、ソケットを介してストリームます。
2:? "System.err.println" と "System.println" の違いは何ですか。
標準エラー出力するへの最初の書き込みを、第二にはありません存在しています。
例外への参照を持っている3:catch文では、我々は "e" を持っています。何のために?我々は後者のそれを使用していますか?
必要なログまたはそれを再スローもしあなたができるようにします。
他のヒント
()あなたはこのコードで「サーバソケットを作成する」ではありません、あなたはServerSocketのからソケットを受け入れている。
サーバーソケットの閉鎖を含む多くの理由のために失敗する可能性(B)。 FDが不足して、ネットワークスタックの問題。メモリの枯渇。 ...それはIOExceptionがスローさせます。
にIOExceptionがファイルハンドルが不足しているスローするように受け入れるための一つの共通の理由。これは、ソケットを作成するために2つのファイルハンドルを必要とし、あなたが出て実行する場合は、「開いているファイルが多すぎます」
のようなエラーが出ます