我正在尝试将文件名列表从我的服务器发送到我的客户端。我第一次运行我的程序时,运行得很好。当它要求我退出时,我输入no
,在Object file_names = objectInput.readObject();
行给java.io.EOFException
提示,可能出了什么问题?
服务器
do {
objectOutput = new ObjectOutputStream(connsock.getOutputStream());
List<String> file_names = new ArrayList<String>();
File[] files = new File("C:\\ServerMusicStorage").listFiles();
for (File file : files) {
if (file.isFile()) {
file_names.add(file.getName());
}
}
//send list to client
objectOutput.writeObject(file_names);
objectOutput.flush();
exitservice = fromClient.readUTF();
} while (exitservice != "noexit");
客户端
objectInput = new ObjectInputStream(newclientSocket.getInputStream());
if (newclientSocket.isConnected()) {
System.out.println("Connected to server...");
boolean exit = false;
while (exit != true) {
System.out.println("<---Available files--->");
// 1 get list of files from server
Object file_names = objectInput.readObject();
file_list = (ArrayList<String>) file_names;
int count = 1;
for (int i = 0; i < file_list.size(); i++) {
System.out.println(count + ")" + file_list.get(i));
count++;
}
System.out.println("Exit? y/n");
String user_exit = inl.readLine();
if (user_exit.equals("y")) {
exit = true;
toServer.writeUTF("exit");
System.out.println("Exiting...");
} else {
exit = false;
toServer.writeUTF("noexit");
}
}
}
newclientSocket.close();
发布于 2021-01-13 22:12:44
while条件中的测试是
while (exitservice != "noexit");
测试变量的指针,而不是它们的真实内容(这是Java的陷阱)。他们从来都不是平等的。
将其更改为:
while (!"noexit".equals(exitservice));
https://stackoverflow.com/questions/65702216
复制相似问题