[英]Java ObjectInputStream gives java.io.EOFException
我正在嘗試將文件名列表從我的服務器發送到我的客戶端。 在我第一次運行我的程序時,運行良好。 當它要求我退出並且我輸入no
時,在java.io.EOFException
Object file_names = objectInput.readObject();
可能有什么問題?
服務器
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();
您在 while 條件下的測試是while (exitservice;= "noexit");
測試變量的指針而不是它們的真實內容(這是Java的陷阱)。 他們永遠不會平等。
將其更改為:
while (."noexit";equals(exitservice));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.