在使用EOFException
方法时,我的价格低于readUTF()
,请告诉我如何克服此问题,并建议readUTF()
如何通过其他网络传输套接字信息< / p>
import java.io.*;
import java.net.*;
public class GreetingServer {
public static void main(String args[]) {
String servername =args[0];
int port = Integer.parseInt(args[1]);
try {
System.out.println("Server Name "+ servername +"Port"+port);
Socket client = new Socket(servername,port);
System.out.println("Just connected to"+ client.getRemoteSocketAddress());
OutputStream outs = client.getOutputStream();
DataOutputStream dout = new DataOutputStream(outs);
dout.writeUTF("Hello From"+client.getRemoteSocketAddress());
InputStream in = client.getInputStream();
DataInputStream din = new DataInputStream(in);
System.out.println("Server Says"+ din.readUTF());
client.close();
}
catch (EOFException f) {
f.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:5)
您已到达流的末尾。没有更多数据可供阅读。
您的服务器可能没有使用writeUTF(),
,或者您与它不同步。如果服务器正在编写行,则应使用BufferedReader.readLine().
答案 1 :(得分:1)
readUtf()
州的docs;
首先,读取两个字节并用于构造无符号的16位 完全按照readUnsignedShort方法的方式。这个 整数值称为UTF长度并指定数量 要读取的其他字节。然后将这些字节转换为 通过分组考虑它们的字符。每组的长度是 根据组的第一个字节的值计算。字节 跟随一个组,如果有的话,是下一组的第一个字节。
这告诉我,您尝试阅读readUtf()的内容不是UTF,因为当End of File (EOF) is read unexpectedly.
时出现EOFException
检查您是否按照服务器发送的顺序读取正确的类型等。您应该遵循一个明确的协议,而不是盲目阅读。