Timberwolf Geschrieben 26. Mai 2009 Teilen Geschrieben 26. Mai 2009 Hallo, ich habe folgendes Problem. Ich habe einen Client und einen Server geschrieben. Beide funktionieren auch ohne probleme. Der Server akzeptiert Verbindung vom Client ohne zu meckern und lässt auch einen LogIn zu.... erst wenn ich versuche fogende Methode auszuführen frisst sich irgendwie der Client fest public ArrayList<ArrayList<String>> get_contacts(){ ArrayList<ArrayList<String>> srv_msg = null; verb_protokoll = null; verb_protokoll = new protokoll(); verb_protokoll.command = 2; System.out.println(verb_protokoll.command); //verb_protokoll.data = new ArrayList<ArrayList<String>>(); srv_msg = connect.send_receive(verb_protokoll); System.out.println(srv_msg); return srv_msg; } hier noch das sehr einfache verbindungsprotokoll public class protokoll implements Serializable{ /** * */ private static final long serialVersionUID = -1560951462415302366L; public Integer command; public ArrayList<ArrayList<String>> data; } das hier ist die class_Connection die auf dem Server läuft an der keine Nachricht ankommt. public class class_connection extends Thread { private Socket socket_client; private ObjectInputStream input_stream; private ObjectOutputStream output_stream; private class_database db; public class_connection(Socket client) { socket_client = client; } // Starten des Threads(prozess starten) public void run() { db = new class_database(); db.conn_db(); class_user usr = new class_user(db); System.out.println("con startet"); // Input und Output Stream der Verbindung beziehen (senden / // empfangen) try { input_stream = new ObjectInputStream(socket_client.getInputStream()); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } System.out.println("hier input waiting"); try { output_stream = new ObjectOutputStream(socket_client.getOutputStream()); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } protokoll protokoll = new protokoll(); System.out.println("warte auf Nachricht"); try { protokoll = (protokoll) input_stream.readObject(); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } catch (ClassNotFoundException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } System.out.println(protokoll.command); switch (protokoll.command) { case 1: System.out.println("login"); String usr_name = protokoll.data.get(0).get(0).toString(); String password = protokoll.data.get(0).get(1).toString(); try { if (usr.login(usr_name, password)) { protokoll = new protokoll(); ArrayList<String> status = new ArrayList<String>(); status.add("success"); System.out.println(status); protokoll.data = new ArrayList<ArrayList<String>>(); protokoll.data.add(status); output_stream.writeObject(protokoll); output_stream.flush(); } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } break; case 2: System.out.println("get_contacts"); break; case 3: System.out.println("search"); break; default: protokoll = new protokoll(); ArrayList<String> status = new ArrayList<String>(); status.add("false"); System.out.println(status); protokoll.data = new ArrayList<ArrayList<String>>(); protokoll.data.add(status); try { output_stream.writeObject(protokoll); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { output_stream.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ich bin mittlerweile echt am verzweifeln weil ich den Fehler bzw. meinen evtl. denkfehler einfach nicht sehe. ich würde mich über hilfe freuen.... wenn weiterer code oder mehr informationen nötig sind soll das alles nicht das Problem darstellen Danke & Gruss Timberwolf Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 27. Mai 2009 Teilen Geschrieben 27. Mai 2009 Schau Dir einmal den Stacktrace an. So, ohne es zu testen, sieht man die Fehler kaum Zur Thread Programmierung fällt mir auf, dass Du keine Schleife in run() ausführst. Du musst dafür sorgen, dass der Thread läuft, d.h. durch eine Schleife. Außerdem solltest Du auch Thread.sleep durchführen, da der Thread nicht die CPU Leistung benötigt. Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Timberwolf Geschrieben 28. Mai 2009 Autor Teilen Geschrieben 28. Mai 2009 Moin flashpixx danke für den Tip mit der while.... bin gerade dabei mal zu schauen ob das jetzt alles so klappt wie ich mir das vorstelle.... Thread sleep hab ich auch schon vorher mal auspobiert muss aber nochmal schau:D wie ich das einbaue.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Timberwolf Geschrieben 28. Mai 2009 Autor Teilen Geschrieben 28. Mai 2009 Danke für die Hilfe. Hat alles geklappt und funktioniert jetzt auch alles so wie es soll... kann hier also geschlossen werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.