Java8でソケット通信プログラムを作成しています。
サーバープログラムのコードについての質問となります。
lang
1package server1; 2 3import java.io.IOException; 4import java.net.ServerSocket; 5import java.net.Socket; 6import java.util.logging.Level; 7import java.util.logging.Logger; 8 9public class Server1 { 10 public static void main(String[] args) { 11 ServerSocket srvSocket; 12 Socket socket; 13 try { 14 srvSocket = new ServerSocket(30000); 15 socket = srvSocket.accept(); 16 17 // ... 18 19 socket.close(); 20 } catch (IOException ex) { 21 Logger.getLogger(Server1.class.getName()).log(Level.SEVERE, null, ex); 22 } 23 } 24} 25
このサーバープログラムでは、srvSocket = new ServerSocket(30000);
, socket = srvSocket.accept();
, socket.close();
の全てでIOException例外が発生します。
Java 8 APIドキュメントでこれらの例外の説明は順に以下の通りに書かれていました。
- ソケットを開いているときに入出力エラーが発生した場合
- 接続の待機中に入出力エラーが発生した場合
- このソケットを閉じるときに入出力エラーが発生した場合
ここで言う入出力エラーとは、具体的にどういうもので、どのようなコードを書いた時に発生するのでしょうか。
また、socket.close();
で例外が発生した時に、恐らくソケットは開いたままなのでどうやって閉じればよいのでしょうか。
ご回答宜しくお願いします。
Java 8 APIドキュメント
ServerSocket (Java Platform SE 8)
Socket (Java Platform SE 8)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2014/11/16 02:49
2014/11/20 00:16
退会済みユーザー
2014/11/20 09:16