【发布时间】:2018-05-10 19:27:23
【问题描述】:
我会尽量简单地说。
类构造函数“B”正在接收一个套接字作为参数,它来自类“A”。在 A 中,套接字用于使用 DataInputStream 和 DataOutputStream 进行 I/O。套接字和流都没有被 A 关闭。
然后,在 B 中,我尝试从同一个套接字创建一个 ObjectInputStream,但我在 OIS 中获得了一个空引用,并且抛出了 EOFException。我不知道为什么会这样。也许我不能用不同类型的流重用套接字。
我已经阅读了许多相关的问题,但没有一个与套接字有关。下面是一些代码。
public HiloLoginHandler(Socket _socket) { // this is class 'A'
socket = _socket;
bytesOut = new DataOutputStream(socket.getOutputStream());
bytesIn = new DataInputStream(socket.getInputStream());
}
public ClientInputHandler(Socket _socket) { // This is Class 'B'
socket = _socket;
InputStream is= socket.getInputStream();
ObjectInputStream in= new ObjectInputStream(is); // EOFException here
}
【问题讨论】:
-
在我看来这不像 Java。
-
EOFException 表示套接字的读取部分已经关闭。为什么会这样?如果您需要帮助,您必须愿意提供MCVE。
标签: java sockets objectinputstream datainputstream eofexception