Zum Inhalt springen

Erbitte Hilfe bei Client / Server Anwendung


Timberwolf

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...