[ range @ 18.06.2002. 11:26 ] @
Imam klijenta koji salje objekat Konto serveru, koji ga deserijalizuje i smesta u bazu. Klijent ima metode listenSocket(), kojim otvara Socket na nekom portu, i metod sendKonto koji za parametre ima socket preko koga se salje i objekat Konto koji se salje. Server ima isto metod listenSocket() koji ima while(true) petlju u kojoj osluskuje klijente, deserijalizuje objekte, i smesta podatke u bazu.Problem je u sledecem: samo jednaput ja mogu da unesem podatke u bazu, posle tog jednog puta server pada uz exception java.net.SocketException: Socket is closed, a ja stvarno nigde ne zatvaram socket.Jel zna neko sta bi to moglo da bude? Evo koda: klijent : public void listenSocket(){ ObjectOutputStream outputKonto = null; socket = new Socket("HOST-NAME", 4444); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); outputKonto = new ObjectOutputStream(socket.getOutputStream()); System.out.println("Connected!!!!!!! "); } catch (UnknownHostException e) { System.out.println("Unknown host: "); System.exit(1); } catch (IOException e) { System.out.println("No I/O"); e.printStackTrace(); System.exit(1); } } protected void sendKontoToServer(){ theKonto = this.getKonto1(); try{ socket = this.getSocket(); sendKonto(socket, theKonto); } catch (Exception e) { System.out.println("Unknown host: "); e.printStackTrace(); System.exit(1); } } protected void sendKonto(Socket socket, Konto theKonto){ ObjectOutputStream outputToServer = null; try{ outputToServer = new ObjectOutputStream(socket.getOutputStream()); outputToServer.writeObject(theKonto); outputToServer.flush(); outputToServer.close(); } catch (IOException e){ e.printStackTrace(); } } server: public void listenSocket(){ ObjectInputStream inputKonto = null; Konto aKonto = null; try{ server = new ServerSocket(4444); client = server.accept(); System.out.println("Opened socket!"); } catch(IOException ioE){ System.out.println("Could not listen on port 4444"); ioE.printStackTrace(); System.exit(-1); } try{ System.out.println("3"); inputKonto = new ObjectInputStream(client.getInputStream()); out = new PrintWriter(client.getOutputStream(), true); } catch(IOException ioE){ System.out.println("Accepting connection on port 4444failed!2"); ioE.printStackTrace(); System.exit(-1); } while(true){ try{ inputKonto = new ObjectInputStream(client.getInputStream()); out = new PrintWriter(client.getOutputStream(), true); aKonto = (Konto)inputKonto.readObject(); inputKonto.close(); access.insertKonto(aKonto); } catch(Exception E){ System.out.println("Reading failed!" + E.getMessage()); E.printStackTrace(); System.exit(-1); } } } |