2016-10-15 13 views
0

私はソケットプログラミングに新しく、例外処理の問題を解明しようとしています。プログラムの実行時にコードのreadLine部分が例外エラーを発生させるため、javaのクライアントから文字列メッセージをサーバーに送信できません。私はServerクラスでExceptionを投げてみましたが、サーバープログラムを実行しているときに赤い下線付きのコードエラーは表示されませんでしたが、サーバープログラムの後にクライアントプログラムを実行すると例外が発生しました。何が原因だろうか?ReadLine例外を使用したJavaハンドリングにおけるソケットプログラミング

私のクライアントコード:

package com.soc; 
import java.io.OutputStreamWriter; 
import java.io.PrintWriter; 
import java.net.Socket; 

public class socClient { 

public static void main(String[] args) throws Exception{ 

    String ip = "localhost"; 
    int port = 9999;// 0-1023 to 65535 
    Socket s = new Socket(ip,port); 

    String str = "Hello World"; 

    OutputStreamWriter os = newOutputStreamWriter(s.getOutputStream()); 

    PrintWriter out = new PrintWriter(os); 
    os.write(str); 
    os.flush(); 
} 

}

私のサーバーコード:

package com.soc; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class socServer { 

public static void main(String[] args) throws Exception{ 

    System.out.println("Server is started"); 
    ServerSocket ss = new ServerSocket(9999); 

    System.out.println("Server is waiting for client request"); 
    Socket s = ss.accept(); 

    System.out.println("Client connected"); 


    BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); 
    String str = null; 
    str = br.readLine(); 

    System.out.println("Client Data: " +str); 
} 

}

答えて

0

原因は、クライアントが原因となるソケットを閉じることはありませんということです接続は一部のオペレーティングシステムでリセットされます。

+0

s.close()を追加しました。私のクライアントコードの終わりに、それは働いた、ありがとう! – ErenL