Java 读取url地址时的EOFEException
这是我读取从客户端发送的URL的代码: (服务器类) 但它有一个例外:Java 读取url地址时的EOFEException,java,Java,这是我读取从客户端发送的URL的代码: (服务器类) 但它有一个例外: 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)
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)
快速阅读:您可能会发现您正在读取的流是空的。从文件读取时,您并没有终止循环 抛出: EOFEException-如果此输入流在读取八个字节之前到达末尾 IOException-流已关闭,并且包含的输入流在关闭后不支持读取,或者发生另一个I/O错误。显然您需要一(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
那代码会抛出错误还是什么?可能没有其他东西可读,您会遇到这样的异常。可能您没有在服务器上编写UTF字符串。另外,远程服务器写入url是出于某种原因吗?@ElliottFrisch我在客户端类中以UTF形式写入,甚至没有一个短的(包含以下UTF-8字节的数量)可读取。-如何连接和写入?@ElliottFrisch请参阅updateTerminate哪个循环?八字节?你回答了哪个问题?
String reply = in.readUTF();
if( "http://localhost:8181".equalsIgnoreCase( reply ) ||
"http://localhost:8181/pic".equalsIgnoreCase( reply ) ){
// success
} else {
// failure
}
in.close();
// etc