从套接字抛出 EOFException 创建 ObjectInputStream



我会试着简单地说。

类构造函数"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
} 

下定决心。在一端使用DataOutputStream,在另一端使用ObjectInputStream将永远行不通。您必须使用互补流。

在这种情况下,使用DataInputStream而不是ObjectInputStream,因为显然不会发送任何对象。

为什么在对等方已经关闭连接时打开输入流是另一个谜。如果对等方从不发送任何东西,为什么要打扰?

我在 OIS 中得到一个空引用

不,你不是。

相关内容

  • 没有找到相关文章

最新更新