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);
}
}
}