2011-07-20 32 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()调用。

有人能帮我理解我错过了什么吗?我试图读取服务器在连接时写入客户端的内容,即Hello networking

谢谢。

回答

1

问题出在您的服务器代码 如果您想使用DataInputStream读取它,则应该使用DataOutputStream.writeUTF(String str)写入套接字。

+0

它工作:)。谢谢。 – skip