[ glamoc @ 31.08.2009. 10:54 ] @
Koristim java sockete i prilikom client-server komunikacije server salje neke poruke klijentu medjutim kad klijent treba da primi jednu poruku dolazi do EOFException-a.Pokusao sam sa flush da ocistim streamove ali ne vredi.Cudno mi je da server uspesno posalje nekoliko poruka(i klijent ih uspesno primi)
a onda dodje do problema.Sta je ovde problem
[ nemnesic @ 31.08.2009. 12:42 ] @
Daj client code pa da pomognemo :)

[ glamoc @ 31.08.2009. 16:48 ] @
Relevantni deo klijentskog koda

if(Klijent.poslovi.size()!=0){
if(rezultat_izbor_gui==null)rezultat_izbor_gui=new IzborGUI(me,"Rezultat posla");
int l=rezultat_izbor_gui.showDialog();
if(l!=-1){
ClientServerRequest csr=new ClientServerRequest();
csr.setAction(ClientServerRequest.CLIENT_REQUEST_JOB_STATUS);
csr.setParam(l);
Socket soket=new Socket(Settings.SERVER_IP_ADRESS,Settings.DEFAULT_CLIENT_LISTENER_PORT);
SocketCommunicator sc=new SocketCommunicator(soket);
sc.init();
Klijent.output.println("Klijent zahteva od servera rezultate posla");
sc.writeObject(csr);//salje zahtev
csr=(ClientServerRequest) sc.readControlMessage();//prima status
if(csr.getParam()==Job.DONE){
int duzina;
sc.writeObject(new ClientServerRequest(ClientServerRequest.CLIENT_READY,0));//salje zahtev za parametrima
csr=(ClientServerRequest) sc.readObject();//prima parametre
duzina=csr.getParam();
ClientServerRequest ack=new ClientServerRequest();
ack.setAction(ClientServerRequest.CLIENT_ACK);
ArrayList<ArrayList>paketi=new ArrayList<ArrayList>();
ArrayList paket;
sc.writeObject(ack);//sale potvrdu o pocetku transfera

for(int ind=0;ind<l;ind++){
paket=(ArrayList)sc.readObject();//prima paket
paketi.add(paket);
sc.writeObject(ack);//salje potvrdu
}
Klijent.output.println("Posao je uspesno vracen");
}else{
switch(csr.getParam()){
case Job.FAILED:Klijent.output.println("Nije moguce dobiti izvrseni posao,stanje trazenog posla je "+"FAILED");break;
case Job.READY:Klijent.output.println("Nije moguce dobiti izvrseni posao,stanje trazenog posla je "+"READY");break;
case Job.RUNNING:Klijent.output.println("Nije moguce dobiti izvrseni posao,stanje trazenog posla je "+"RUNNING");break;
case Job.SCHEDULED:Klijent.output.println("Nije moguce dobiti izvrseni posao,stanje trazenog posla je "+"SCHEDULED");break;
case Job.ABORTED:Klijent.output.println("Nije moguce dobiti izvrseni posao,stanje trazenog posla je "+"ABORTED");break;
case -1:Klijent.output.println("Nije moguce dobiti izvrseni posao,jer na serveru ne postoji posao sa zadatim ID-om"); break;
}
}
sc.close();


program puca u liniji koju sam boldovao,tj cim pokusam da na klijentu citam ono sto je server poslao mada na pocetku uspe da procita jdnu poruku
[ glamoc @ 31.08.2009. 19:24 ] @
Resio sam problem...ali mi ponovo nije jasno zasto je doslo do EOFException-a...
problem je bio sto se nit koja je slala klijentu paket zakuca...i onda bi i klijent trebo da se zakuca na readObject-u a ne da dodje do izuzetka.
U svakom slucaju hvala na pokusaju pomoci