PDA

Visualizza la versione completa : [JAVA] Problemi con applicazione client-server


ceglio
28-12-2005, 17:11
sto cercando di creare un'applicazione client-server implementata ovviamente in multithread; il passaggio dei dati tra client e server li ho fatti utilizzando i socket e gli oggetti ObjectInputStream e ObjectOutputStream; ho un problema sul server: quando inserisco un oggetto di input, in "teoria" il server dovrebbe fermarsi ed aspettare l'invio dei dati da parte del client tramite ObjectOutputStream.Il problema che il server al primo oggetto di input si ferma e aspetta il client, poi appena il client invia i dati la prima volta il server va in loop contiuno e nn si ferma pi.naturalmente il server strutturato con all'inizio un ciclo while mi permette di far ricominciare il server ogni volta che il client si riporta al menu principale.
Se ci fosse qualche buon anima che mi volesse aiutare, lo prego di lasciarmi un msg, almeno metto on-line tutta la classe del server.
ciao e grazie

alka
28-12-2005, 18:29
A quale linguaggio di programmazione fai riferimento?

Dato che sei nuovo, leggi il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=862017) per conoscere tutte le norme per partecipare in modo corretto a quest'area del forum.

Ciao! :ciauz:

LeleFT
29-12-2005, 13:52
Bisognerebbe vedere il codice... a occhio direi che invece di tornare all'invocazione del metodo readObject() fai tornare il server alla accept()...


Ciao. :ciauz:

ceglio
29-12-2005, 14:24
import java.net.*;
import java.io.*;
import java.sql.*;
import java.lang.*;

class serverChat implements Runnable{

String data = "jdbc:odbc:archivio";
String user;
private Socket connection;
private Thread me;
public serverChat (Socket s){
connection = s;
me=new Thread(this);
me.start();
System.out.println(connection);
}

public void run(){
try {
ObjectInputStream is;
ObjectOutputStream os;
boolean continua=true;
while (continua==true) {
try{
System.out.println("Inizio");
is=new ObjectInputStream(connection.getInputStream());
controllore = (int[])is.readObject();
is.close();
System.out.println(controllore[0]);
//System.out.println("");
System.out.println("Iniziato");

}
catch (Exception e){};
switch (controllore[0]){
case 1:
boolean esci[] = new boolean[1];
esci[0]=false;
try{
System.out.println("eccoci al case 1");
System.out.println(esci[0]);
boolean[] esciLogin = new boolean[1];
esciLogin[0]=false;
while (esciLogin[0]!=true){
is = new ObjectInputStream(connection.getInputStream());
esci=(boolean[])is.readObject();
is.close();
if (esci[0]!=true){
is = new ObjectInputStream(connection.getInputStream());
UserPwd = (String[])is.readObject();
System.out.println("UserPwd: " + UserPwd[0] + " "+ UserPwd[1] + " " + UserPwd[2]);
if (ControllaPWD(UserPwd)==true){
confrontoPWD[0]=true;
esciLogin[0]=true;
user=UserPwd[0];
}
else
confrontoPWD[0]=false;
os = new ObjectOutputStream(connection.getOutputStream());
os.writeObject(confrontoPWD);
}else
esciLogin[0]=true;
System.out.println("");
}


}

Loading