質問

私は、以下のコード:

Socket clientSocket = null;
try {
   clientSocket = serverSocket.accept();
} catch (IOException e) {
   System.err.println("Accept failed.");
   System.exit(1);
}

このコードからの引用 java.sun.com.

私はいくつかの質問に関する上記の指定されたshortのコードです。

  1. なぜいたく、IOException.いるもののIOExceptionができるものが利用する場合は、入力-出力方法なネットワーク方法

  2. はどう違うのは、"システム。err.println"および"システム。println"?

  3. をキャッチ決して"です。何ですか?なお問い合わせ頂いた後?

役に立ちましたか?

解決

  

1:なぜ私たちはIOExceptionがキャッチしたいです。私にIOExceptionが、我々は、入力・出力方法(ないネットワーキングメソッド)を使用する場合に発生することが何かあるといえます。

ネットワークは、入力/出力されます。バイトは、ソケットを介してストリームます。

  

2:? "System.err.println" と "System.println" の違いは何ですか。

標準エラー出力するへの最初の書き込みを、第二にはありません存在しています。

  

3:catch文では、我々は "e" を持っています。何のために?我々は後者のそれを使用していますか?

例外への参照を持っている

必要なログまたはそれを再スローもしあなたができるようにします。

他のヒント

()あなたはこのコードで「サーバソケットを作成する」ではありません、あなたはServerSocketのからソケットを受け入れている。

サーバーソケットの閉鎖を含む多くの理由のために失敗する可能性

(B)。 FDが不足して、ネットワークスタックの問題。メモリの枯渇。 ...それはIOExceptionがスローさせます。

にIOExceptionがファイルハンドルが不足しているスローするように受け入れるための一つの共通の理由。これは、ソケットを作成するために2つのファイルハンドルを必要とし、あなたが出て実行する場合は、「開いているファイルが多すぎます」

のようなエラーが出ます
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top