Я хочу сделать серверное клиентское приложение. Я все настроил и получаю эту ошибку. я хочу, чтобы приложение подождало, пока я не получу больше данных.
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
на линии:
listener.Received(inputstream.readObject(), id.ID);
Код сервера:
isrunning = true;
Thread input = new Thread(new Runnable(){
@Override
public void run() {
try{
ServerSocket Server = new ServerSocket(LocalPort);
while(isrunning){
Socket socket = Server.accept();
ObjectOutputStream outputstream = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream inputstream = new ObjectInputStream(socket.getInputStream());
Object obj = inputstream.readObject();
if(obj instanceof ID){
ID id = (ID) obj;
if(connctedChecker(id.ID)){
ID myid = new ID(ID, LocalIP, LocalPort);
outputstream.writeObject(myid);
connect(id.IP, id.Port);
listener.Connected(id.ID);
do{
listener.Received(inputstream.readObject(), id.ID);
}while(socket.isConnected());
listener.Disconnected(id.ID);
closeConnection(id.ID);
}
}
inputstream.close();
outputstream.close();
socket.close();
}
Server.close();
}catch(Exception e){
e.printStackTrace();
}
}
});
input.start();
Код клиента:
output = new Thread(new Runnable(){
@Override
public void run(){
try {
socket = new Socket(RemoteIP, RemotePort);
inputstream = new ObjectInputStream(socket.getInputStream());
outputstream = new ObjectOutputStream(socket.getOutputStream());
ID id = new ID(ID, LocalIP, LocalPort);
outputstream.writeObject(id);
outputstream.flush();
Object obj = inputstream.readObject();
if(obj instanceof ID){
ID inid = (ID) obj;
RemoteID = inid.ID;
}
while(socket.isConnected()){
Object object = queue.take();
outputstream.writeObject(object);
outputstream.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
слушатель:
public class Listener {
public void Connected(UUID ID){
}
public void Received(Object object, UUID ID){
}
public void Disconnected(UUID ID){
}
}