Java 从引发EOFEException的套接字创建ObjectInputStream
我会尽量简单地说 类构造函数“B”正在接收套接字作为参数,它来自类“a”。在A中,套接字用于使用DataInputStream和DataOutputStream进行I/O。套接字和流均未被A关闭 然后,在B中,我尝试从同一套接字创建ObjectInputStream,但我在OIS中得到一个空引用,并且抛出了EOFEException。我不知道为什么会这样。也许我不能在不同类型的流中重用套接字 我读过很多相关的问题,但没有一个是带插座的。吼叫一些代码Java 从引发EOFEException的套接字创建ObjectInputStream,java,sockets,objectinputstream,datainputstream,eofexception,Java,Sockets,Objectinputstream,Datainputstream,Eofexception,我会尽量简单地说 类构造函数“B”正在接收套接字作为参数,它来自类“a”。在A中,套接字用于使用DataInputStream和DataOutputStream进行I/O。套接字和流均未被A关闭 然后,在B中,我尝试从同一套接字创建ObjectInputStream,但我在OIS中得到一个空引用,并且抛出了EOFEException。我不知道为什么会这样。也许我不能在不同类型的流中重用套接字 我读过很多相关的问题,但没有一个是带插座的。吼叫一些代码 public HiloLoginHandler
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中得到一个空引用
不,你不是。在我看来,这不像Java。EOFEException表示套接字的读取部分已经关闭。为什么会这样?如果你想得到帮助,你必须愿意拿出一份报告。