首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java ObjectInputStream提供了java.io.EOFException

Java ObjectInputStream提供了java.io.EOFException
EN

Stack Overflow用户
提问于 2021-01-13 20:42:12
回答 1查看 45关注 0票数 0

我正在尝试将文件名列表从我的服务器发送到我的客户端。我第一次运行我的程序时,运行得很好。当它要求我退出时,我输入no,在Object file_names = objectInput.readObject();行给java.io.EOFException提示,可能出了什么问题?

服务器

代码语言:javascript
运行
复制
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");

客户端

代码语言:javascript
运行
复制
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();
EN

回答 1

Stack Overflow用户

发布于 2021-01-13 22:12:44

while条件中的测试是

while (exitservice != "noexit");

测试变量的指针,而不是它们的真实内容(这是Java的陷阱)。他们从来都不是平等的。

将其更改为:

while (!"noexit".equals(exitservice));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65702216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档