簡體   English   中英

Java ObjectInputStream 給出 java.io.EOFException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM