2011-07-20 15 views
1

ネットワークに新しく、MyClient.javaを実行しようとすると、EOFExceptionが発生します。Java:ネットワーク内のEOFException

MyServer.java

public class MyServer { 
    public static void main(String[] args) { 
     ServerSocket serverSocket = null; 
     try { 
      serverSocket = new ServerSocket(4321); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     while(true) { 
      try { 
       Socket socket = serverSocket.accept(); 
       OutputStream os =socket.getOutputStream(); 
       OutputStreamWriter osw = new OutputStreamWriter(os); 
       BufferedWriter bw = new BufferedWriter(osw); 
       bw.write("Hello networking"); 

       bw.close(); 
       socket.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

MyClient.java

public class MyClient { 
    public static void main(String[] args) { 
     Socket socket = null; 
     try { 
      socket = new Socket("127.0.0.1", 4321); 
      InputStream is = socket.getInputStream(); 
      DataInputStream dis = new DataInputStream(is); 
      System.out.println(dis.readUTF()); 

      dis.close(); 
      socket.close(); 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } catch (ConnectException e) { 
      System.err.println("Could not connect"); 
     } catch (UTFDataFormatException e) { 
      System.err.println("if the bytes do not represent a valid modified UTF-8 encoding of a string"); 
     } catch (EOFException e) { 
      System.err.println("if this input stream reaches the end before reading all the bytes"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

この入力ストリームがエラーとエラーのためにすべてのバイトを読み込む前に終わりに達した場合、私は取得dis.readUTF()呼び出しから発生しているようです。

誰かが私に何が欠けているのか理解してもらえますか?私はちょうどサーバーがクライアントに接続すると、それはハローネットワーキングです書き込みを読み取ろうとしています。

ありがとうございました。

答えて

1

問題はサーバーコード にあります。DataInputStreamで読み取る場合は、DataOutputStream.writeUTF(String str)を使用してソケットに書き込む必要があります。

+0

それは働いた:)ありがとう。 – skip

関連する問題