Zugriff auf Variable in anderem Thread

Status
Nicht offen für weitere Antworten.

sczakiju

Mitglied
Hallo :)

Ich bin Java Einsteiger und möchte dennoch RemoteControl System in Java realisieren. Nun habe ich da noch ein paar Probleme. Also die Grundstruktur sieht folgendermaßen aus:

- Server der auf Port x auf Verbindungen wartet
- Server der auf Port y auf Verbindungen wartet

- Threads die Verbindungen auf Port x verwalten und mit dem Client kommunizieren
- Threads die Verbindungen auf Port y verwalten und mit dem Browser kommunizieren (eine Weboberfläche mit kleinem Java Webserver (Also der einfach Pakete im http abschickt)

So nun würde ich gerne in dem Thread für die Weboberfläche die verbunden Clients ausgeben, also brauche ich irgendwie eine Liste oder sowas in dem Thread für die Clients, der den Hostname der Clients ausliest. Okay das sollte machbar sein, nur wie kann ich auf diese Variable zugreifen? Und worin soll ich die Clients abspeichern? Vorschlag von einem Freund war in einer HashMap aber ich habe keine Ahnung wie ich das machen soll... :bahnhof:

Danke schonmal für eure Hilfe :)
 

Spin

Top Contributor
Also ich schätze nicht , dass dir hier jemand eine HashMap mit irgenwelchen variablen programmiert.

Da wird lediglich der Verweis auf ein gutes Buch kommen , wie von mir:

Schau dir die java FAQ's im Forum an und such dir dass passende raus.
Open books

Schau dir mal was an und poste dann deine konkreten probleme, gruss
 

sczakiju

Mitglied
Hallo Spin und Danke für deine Antwort.

Ich hab natürlich nicht erwartet, dass mir jemand hier was fertiges programmiert ;)
Also das konkrete Problem ist eigentlich auch eher bei mir, in was für einem Typ Variable (HashMap war nur ein Vorschlag von einem Freund aber ich weiß ja nicht was ihr meint) ich die verbundenen Clients abspeichern sollte.
Also sagen wir mal ich möchte nachher eine Liste mit Hostnamen haben die verbunden sind. Also der Client schickt seinen Namen an den Server nur in welchem Typ Variable speicher ich das am besten? Natürlich muss der User da auch wieder raus aus dieser Liste, wenn er die Verbindung trennt.
Gruß sczakiju
 

pixelbug

Mitglied
Du könntest von den die ankommenden Clients die Socket Objekte die der Server mittels der
Java:
 accept()
Methode an die Threads weitergibt vorher benutzen um den Namen abzufragen.

Java:
...
Socket client = serverSocket.accept() 
...
String hostname = client.getInetAddress().getHostName(); 
...

Den Namen mit dem Socket kannst du dann in einer
Java:
Map<String,Socket>
speichern.
Diese Map könne in einem Singelton gekapselt werden damit sie von allen Threads zugänglich ist, für das hinzufügen neuer Clients und das löschen.
Aus Gründen der threadsicherheit rate ich zu einer ConcurrentHashMap.
 

sczakiju

Mitglied
Danke für deine Antwort!

Genau so ähnlich habe ich das schon. Moment hier mal die Codeausschnitte

CServerThread:

Java:
while (true)
			{
				// Eingehende Client-Verbindungen aktzeptieren
				ClientConnection = ServerSocket.accept();
				// ClientID MD5 Hash erzeugen
				ClientID = CMD5.MD5(System.nanoTime() + "");
				// Neuen ConnectionThread aufrufen und ClientID (,den Socket und eigenen Thread) übergeben
				CConnectionThread ConnectionThread = new CConnectionThread(ClientConnection, ClientID, this);
				// Speichere Client in Hashmap
				Clients.put(ClientID, ConnectionThread);
				// ConnectionThread starten
				ConnectionThread.run();
			}
Nun weiß ich leider nicht genau, wie ich auf die Variable zugreife bzw. wie ich sie am besten verändere. Könntest du mir das mit dem Singleton und der ConcurrentHashMap noch einmal erklären?
Gruß sczakiju
 

pixelbug

Mitglied
Zum Thema Singelton siehe Wikipedia.

Der Aufbau wäre dann wie folgt:
Java:
public class VerbundeneClients {
	
	/** aktuelle und einzige Instanz des Objektes.  */
	private static final VerbundeneClients aktInstanz = new VerbundeneClients();
	
	/** Map mit den Verbundenen Clients. */
	private final Map<Socket, String> verbundeneClients;
	
	/**privater Konstruktor Verhindert das mehrmalige Instanzieren */
	private VerbundeneClients () {
		this.verbundeneClients = new ConcurrentHashMap<Socket, String>();
	}
	
	/** Zugriff af die einzieg Vorhandene Instanz beschaffen. */
	public static final VerbundeneClients getInstance() {
		return aktInstanz;
	}
	
	public void neueVerbindung(final Socket ClientSocket, final String name) {
		//hinzufuegen zur Map
	}
	
	public void clientVerbindungBeendet(final Socket clientSocket) {
		//entfernen aus der Map
	}	
}

Zugriff darauf hast du mit VerbundeneClients.getInstance(), dann kannst du die nötigen Methoden aufrufen die du brauchst.

Ein Hinweis noch, nicht ConnectionThread.run(); sondern ConnectionThread.start() benutzen.
 

sczakiju

Mitglied
Danke :) Das hat mir schonmal sehr geholfen :)
Ich werd das heute Abend mal testen und gebe dann nochmal ne Rückmeldung
Gruß sczakiju
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
B Methoden Zugriff auf Variable ermöglichen Java Basics - Anfänger-Themen 3
C Problem mit Zugriff auf Variable bzw. get-Methode in anderer Klasse Java Basics - Anfänger-Themen 2
J Zugriff auf Variable vom typ (default) durch Importieren des Packages? Java Basics - Anfänger-Themen 5
berliner Klassen Vererbung und Zugriff auf innere private Variable Java Basics - Anfänger-Themen 22
A kein zugriff auf variable trotz public? Java Basics - Anfänger-Themen 3
H Zugriff auf externe Variable Java Basics - Anfänger-Themen 10
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
W Typisierte ArrayList und der Zugriff auf den Typ Java Basics - Anfänger-Themen 5
M Zugriff auf Klasse Java Basics - Anfänger-Themen 2
K Zugriff auf C: Java Basics - Anfänger-Themen 5
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T ZUgriff auf 'Werte' Java Basics - Anfänger-Themen 3
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
M Zugriff auf Arraylist Java Basics - Anfänger-Themen 7
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
B Erste Schritte Array-Zugriff Java Basics - Anfänger-Themen 10
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben