Alle Rechner im Netzwerk ermitteln

c_sidi90

Top Contributor
Ich habe ein Chatprogramm entwickelt, welches gleichzeitig Server und Client ist. Dieses Programm soll Gruppen erstellen können, wenn man z.B. als Empfänger "ALLE" eintippt, soll die Nachricht an alle User im Netzwerk geschickt werden.

Meine Frage: Wie kann ich diese ermitteln? Via MulticastSocket ?
Das Programm arbeitet mit einem Datagram Socket.

Mfg
 
S

SlaterB

Gast
mit 149 Postings sollte man wissen dass das kein Thema für Java-Basics ist, sondern z.B. für Netzwerkprogrammierung (!)
verschoben
 

c_sidi90

Top Contributor
Danke, da ging es aber darum, wie ich Server und Client in einer Anwendung implementiere. Und @ Slater hoffe du kannst das am frühen Morgen verkraften das ich in die falsche Rubrik gepostet habe ;)
 

Andi_CH

Top Contributor
Funktioniert der chat denn ansonsten peer to peer?

Ich geh mal davon aus, dass es nicht so ist - es wird also einen Server geben und der weiss wer alles im Netz ist - die Clients haben sich ja bei ihm angemeldet.

Also schick die Meldung an den Server mit der "Adresse" "alle" und der verteilt sie dann an alle.

Allerdings ist meine Glaskugel gerade in Reparatur und man sollte vielleicht etwas mehr über die aktuelle Implementation wissen um das elegant beantworten zu können.
 

c_sidi90

Top Contributor
Der >Chat funktioniert einwandfrei unter allen Netzteilnehmern, allerdings peer to peer sprich Nachrichten werden nur zwischen 2 Personen verschickt. Wer die Nachricht erhält wird durch den Netzwerknamen des Rechners ermittelt. Aber ich möchte halt eine Nachricht an alle im Netzwerk schicken und muss dafür diese erst ermitteln können.

EDIT: Als Server fungiert der Client, welcher sich als erstes startet.

mfg
 

Andi_CH

Top Contributor
Wozu braucht es dann einen Server?
Was macht der?
Wie kommt der Client zur Verbindung zum anderen Client?

Ich bin immer noch der Meinung, dass nur der Server weiss wer alles im Netz ist - die haben sich ja gemeldet, also schick die Meldung dem Server und der soll sie verteilen.
 

c_sidi90

Top Contributor
Also das Programm Prüft zu beginn ob es einen Socket auf einem festgelegten Port gibt, wenn nicht startet das Programm einen Thread welcher einen Server erstellt und laufen lässt. Jedes Programm prüft zum Start ob auf dem Port ein Server horcht. Wenn nicht wird der Thread nicht gestartet und es wird nur eine Funktion zum Senden einer Nachricht an diesen Port benutzt.
 

Andi_CH

Top Contributor
Das wissen wir schon und es hilft nicht wirklich weiter - WAS macht der Server was hat der überhaupt für Aufgaben?

Wenn der Client merkt, dass da schon ein Server läuft muss er dem Server doch sagen dass er da ist und der muss sich das irgendwie merken.

Wenn einer Client einem anderen eine Meldung schicken will geht die ja wohl kaum peer to peer direkt zum Client, sondern läuft über den Server - oder nicht? Wenn doch wie kommt er zur IP Adresse des anderen Clients?

--

Oder mal frech gefragt, weisst du überhaupt was deine Software macht ;-)
 

c_sidi90

Top Contributor
Der Client schickt Datagrampackete an den Server diese Beinhalten die IPAdresse des Empfängers. Der Server leitet dieses Packet dann an den Client weiter.

Ich weiss was ich programmiert habe :p
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Boah also ist es doch kein peer to peer system - also weiss der schon welcher Client welche IP hat

1. Vermutlich unnötig, da vermutlich schon vorhanden: Software so umbauen, dass der Server eine Liste führt wer sich alles anmeldet

2. Auch das ist vermutlich schon so: Client so umbauen, dass der nicht nur prüft ob ein Server läuft sondern sich bei dem auch anmeldet

3. Server umbauen, dass er den Benutzer "Alle" kennt und die Meldung dann an alle angemeldeten Clients schickt.

Falls immer noch unklar: Kompilierbare Software posten ;-)
 

c_sidi90

Top Contributor
Ich meinte auch das der Chat MOMENTAN peer to peer funktioniert ;) Der Server führt keine Liste darüber, er leitet nur die Datagrampackete weiter. Die IP der Empfänger hat ermittelt der Client aus dem Computernamen im Netzwerk.
 

c_sidi90

Top Contributor
Hier mal die Serverklasse

Java:
class ThreadServer extends Thread {
	
	private UDPProjektNeu udp;
    public boolean running;
    
    public ThreadServer(UDPProjektNeu udp){
        this.udp = udp;
    }
    
    public void shutDown(){
    	running = false;
    }

	public void run(){
		
		running = true;
		DatagramSocket socket = null;
		
		try {
			socket = new DatagramSocket(5001);
		}
		catch (SocketException e) {
			
			try {
				socket = new DatagramSocket();
			}
			catch (SocketException e1) {
			
			}
		}
		
		 while(running==true){
			 
			byte[] inData = new byte[1024];
			String message;
			DatagramPacket in = new DatagramPacket(inData, inData.length);
				
			try {
				
				socket.receive(in);
				
			} catch (IOException e) {
				running = false;
				socket.close();
				udp.chatArea.append("Packet konnte nicht empfangen werden");
			}
				
			String senderName = in.getAddress().getHostName();
			message = new String(in.getData(),0,in.getLength());
			SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
			String uhrzeit = sdf.format(new Date());
			udp.chatArea.append(uhrzeit +" "+ senderName+":"+"\r\n" +message+"\r\n");
		}
		 
		 socket.close();
	}
 
S

Spacerat

Gast
Also iwie muss sich der Server (bei wem er auch immer gestartet wird, die verbundenen Clienten merken, z.B. in einer Liste, bzw. an einer "Map of Lists", sprich "Map<Channel, List<Client>>". Kann doch nicht so schwer sein, die Pakete an die gewünschten Gruppen weiterzuleiten. Das würde dann so gehen, indem man durch die Liste der jeweiligen Gruppe iteriert oder viel besser, über eine Multicast-IP der Gruppe.
@Edit: Schon wieder zu langsam... man wird alt ;)
 
Zuletzt bearbeitet von einem Moderator:

c_sidi90

Top Contributor
also praktisch im laufenden thread die senderIp in eine Liste speichern und bei jedem Packet prüfen ob diese schon in der Liste ist, wenn nicht diese hinzufügen?
 
S

Spacerat

Gast
Sorry? Bei der Anmeldung in die Liste eintragen, nicht erst, wenn Messages empfangen bzw. gesendet werden ;) Das erspart dauernde Überprüfungen.
 

Andi_CH

Top Contributor
Ich meinte auch das der Chat MOMENTAN peer to peer funktioniert ;) Der Server führt keine Liste darüber, er leitet nur die Datagrampackete weiter. Die IP der Empfänger hat ermittelt der Client aus dem Computernamen im Netzwerk.

Peer to peer heisst dass der Client die Datenpaket direkt an den anderen Client schickt - da die Datenpakete aber über den Server laufen ist es KEIN peer to peer system!
Ist das so schwierig zu verstehen?
Und ich hab ja getippt, dass der Server, falls er es noch nicht tut, eine Liste führen muss.

Spannend finde ich, dass du jetzt auch von anderer Seite so in etwa denselben Vorschlag wie von mir zu lesen bekommen hast und ihn offensichtlich immer noch nicht verstehst.
Falls ich wieder einmal auf ein Testresultat warten muss und du bis dann deine komplette kompilierbare und lauffähige Software gepostet hast, löse ich das Problemchen schnell.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Broadcast - senden eines Packetes an alle rechner im netz Netzwerkprogrammierung 15
M Socket Senden an alle verbundenen Clients Netzwerkprogrammierung 3
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
M MultiClient Server - Senden an alle Clients Netzwerkprogrammierung 8
M Teilnehmerliste vom Server auch an alle Clients senden Netzwerkprogrammierung 0
M Erreichbar für alle zu sein Netzwerkprogrammierung 9
N Selbes URL Objekt für alle Requests nutzen Netzwerkprogrammierung 7
M Datenübertragung per Socket nur alle 200ms Netzwerkprogrammierung 4
E Alle IPs im Lan herausfinden und zwischenspeichern? Netzwerkprogrammierung 4
C Alle Computer eines Netzwerkes finden Netzwerkprogrammierung 32
V Alle Ip-Adressen eine Lokalen-Netzwerkes erfragen Netzwerkprogrammierung 9
T JavaMail POP Zugriff zeigt nicht alle Emails Netzwerkprogrammierung 2
H Neues NIO problem nachricht an alle clients Netzwerkprogrammierung 3
G alle 20 sec ein 2 sekunden Lag im Java-Spiel Netzwerkprogrammierung 13
M RMI - Ein Objekt für Alle? Netzwerkprogrammierung 5
G Nachricht von server an alle clients senden Netzwerkprogrammierung 6
Eigenen Rechner als Server? Netzwerkprogrammierung 16
M Socket Hole Punching auf Rechner mit mobilem Zugang Netzwerkprogrammierung 1
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
A Server auf eigenem Rechner Netzwerkprogrammierung 14
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
S XAMPP auf anderem Rechner erreichen Netzwerkprogrammierung 6
S anderer Rechner wird nicht gefunden Netzwerkprogrammierung 20
M Subnetz-Rechner Netzwerkprogrammierung 2
A java im netzwerk anderen rechner runterfahren Netzwerkprogrammierung 3
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
M RMI auf lokalem Rechner Netzwerkprogrammierung 12
K Getrennte Rechner für RMI-Server/RMI-Registry, bzw. Alternativen? Netzwerkprogrammierung 5
J Mit Java Anwendung ein (externes) Programm auf einem AIX Rechner starten Netzwerkprogrammierung 6
D Client-Rechner stürzt ab - was dann? Netzwerkprogrammierung 2
S welche Rechner sind im lokalen Netz online Netzwerkprogrammierung 11
T Andere Rechner im Netz finden Netzwerkprogrammierung 21
M Rechner einer Domäne auslesen? Netzwerkprogrammierung 3
D Multicast geht nur auf einem Rechner Netzwerkprogrammierung 9
J Kopieren von entfernten Rechner Teil 2 Netzwerkprogrammierung 11
J Kopieren von entfernten Rechner Netzwerkprogrammierung 5
D Zugriff auf Rechner im Lan Netzwerkprogrammierung 2
I ActiveMQ-Messages übers Netzwerk Netzwerkprogrammierung 13
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
W Das Netzwerk entfernen mit Wifi Manager Netzwerkprogrammierung 1
F Neuronales Netzwerk - Genetischer Algorithmus Netzwerkprogrammierung 0
windl Sporadische Aussetzer im Netzwerk Netzwerkprogrammierung 10
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
MaxG. Netzwerk Ping falsches ergebnis Netzwerkprogrammierung 7
T Netzwerk Login Felder ansprechen Netzwerkprogrammierung 1
B Netzwerk - Fernsteuerung Netzwerkprogrammierung 1
S Netzwerk-Framework gesucht Netzwerkprogrammierung 6
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
C Netzwerk Portzuweisungsproblem Netzwerkprogrammierung 0
I PingPong Spiel übers Netzwerk Netzwerkprogrammierung 1
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
M PongSpiel Netzwerk Netzwerkprogrammierung 1
D Geräte im Lokalen netzwerk auflisten Netzwerkprogrammierung 1
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
I Netzwerk FileShare Program Netzwerkprogrammierung 2
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
D Ermitteln ob WLAN-Netzwerk UDP unterstützt Netzwerkprogrammierung 1
O 4Gewinnt Multiplayer - Netzwerk Problem (TCP) Netzwerkprogrammierung 1
B WebSocket Verbindungsaufbau aus localen Netzwerk Netzwerkprogrammierung 2
S Bilder durch's Netzwerk usw ... Netzwerkprogrammierung 10
Kr0e Dezentrales Soziales Netzwerk Netzwerkprogrammierung 48
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
vandread Zugriff auf Soziales Netzwerk mittels Java? Netzwerkprogrammierung 4
P Automatische Host suche im Netzwerk Netzwerkprogrammierung 3
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
S Netzwerk Verbindungsproblem mit Cajo Netzwerkprogrammierung 5
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
J Komplexes Netzwerk-Spiel im Internet Netzwerkprogrammierung 13
J ObjectInputStream im Netzwerk Netzwerkprogrammierung 8
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
M Netzwerk Programmierung Netzwerkprogrammierung 2
F Netzwerk-Designkonzept Netzwerkprogrammierung 2
D Ring-Netzwerk - wie fange ich an? Netzwerkprogrammierung 3
X Password übers Netzwerk schicken jPasswordField Netzwerkprogrammierung 2
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
D Netzwerk-To-Do-Liste Netzwerkprogrammierung 5
Semox Socket Selbstgeschriebenen Webserver im lokalen Netzwerk publizieren? Netzwerkprogrammierung 4
S Socket nach anderen clients im netzwerk suchen Netzwerkprogrammierung 3
T Netzwerk-Dateiübertragung optimieren Netzwerkprogrammierung 15
G Netzwerk Speed checken Netzwerkprogrammierung 3
L Socket Socketverbindung nur im lokalen Netzwerk Netzwerkprogrammierung 12
F Char über Netzwerk senden Netzwerkprogrammierung 6
P SocketServer im lokalen netzwerk suchen Netzwerkprogrammierung 2
I Objekte über das Netzwerk Netzwerkprogrammierung 5
B RMI RMI, Callback und Netzwerk Netzwerkprogrammierung 6
agent47 IP Adressen im Lokalen Netzwerk Scannen Netzwerkprogrammierung 7
S Netzwerk und Objekte Netzwerkprogrammierung 5
G Netzwerk IP Frage Netzwerkprogrammierung 4
Akrillo Datei per Netzwerk senden Netzwerkprogrammierung 10
W funktionen übers netzwerk nutzen Netzwerkprogrammierung 4
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
M upnp Device-Discovery im Netzwerk Netzwerkprogrammierung 5
T Administration von Software auf Clients im Netzwerk Netzwerkprogrammierung 6
H MySQL übers Netzwerk Netzwerkprogrammierung 9
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
T Pfadangabe beim kopieren übers Netzwerk Netzwerkprogrammierung 5
G Verschlüsselte Strings über Netzwerk verschicken Netzwerkprogrammierung 19
D robustes Netzwerk Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben