读取url地址时出现EOFException

时间:2014-08-11 15:39:02

标签: java

这是我读取客户端发送的URL的代码:

(服务器类)

Socket serverS = serverSocket.accept();
DataInputStream in = new DataInputStream(serverS.getInputStream())

   if(in.readUTF().equals("http://localhost:8181")){
      // do something
      }

但它有一个例外:

java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340)
at java.io.DataInputStream.readUTF(DataInputStream.java:589)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at myp.T3Server.run(T3Server.java:37)

我在客户端类中写为UTF

更新

客户端类:

        Socket client = new Socket(serverName, portNumber);
        OutputStream outToServer = client.getOutputStream();
        DataOutputStream out = new DataOutputStream(outToServer);
        out.writeInt("http://localhost:8181/pic");
        client.close();

服务器类:

   Socket serverS = serverSocket.accept();
   DataInputStream in = new DataInputStream(serverS.getInputStream());
     if (in.readUTF().equalsIgnoreCase("http://localhost:8181")) { 
         System.out.println("its http://localhost:8181");
           serverS.close();
         } else if (in.readUTF().equals("http://localhost:8181/pic")) {  //Error here
           System.out.println("its pic");
            serverS.close();
         }

结果:

java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340)
at java.io.DataInputStream.readUTF(DataInputStream.java:589)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at myp.T3Server.run(T3Server.java:37)

3 个答案:

答案 0 :(得分:1)

显然你期望一(1)个字符串,但你的代码

  if (in.readUTF().equalsIgnoreCase("http://localhost:8181")) {    // !!!!!!
     System.out.println("its http://localhost:8181");
       serverS.close();
     } else if (in.readUTF().equals("http://localhost:8181/pic")) {  // !!!!!
       System.out.println("its pic");
        serverS.close();
     }
如果第一个不是预期值,

读取两(2)个字符串。这样做:

String reply = in.readUTF();
if( "http://localhost:8181".equalsIgnoreCase( reply ) ||
    "http://localhost:8181/pic".equalsIgnoreCase( reply ) ){
    // success
} else {
    // failure
}
in.close();
// etc

答案 1 :(得分:0)

快速阅读:Class EOFException您可能会发现您正在阅读的信息流为空。

答案 2 :(得分:0)

从文件中读取时,您的循环不会终止 抛出:

EOFException - 如果此输入流在读取八个字节之前到达结尾。

IOException - 流已关闭且包含的输入流在关闭后不支持读取,或发生另一个I / O错误。

相关问题