Andere Rechner im Netz finden

Status
Nicht offen für weitere Antworten.

taouri

Aktives Mitglied
Hallo zusammen,

ich möchte ein kleines Chatprogramm bauen, um mich mal wieder ein wenig mit der Java-Netzwerkprogrammierung zu beschäftigen. Dazu wollte ich alle Rechner im lokalen Netzwerk einbeziehen. Mein Problem ist jetzt, dass ich keine Ahnung habe, wie das mit Java gehen soll, da man auf den mir bekannten Wegen lediglich bis zum Router oder vielleicht auch einem über ad-hoc verbunden PC kommt aber nicht an die Rechner, die sich sonst noch hinter dem Router verbergen (sprich Rechner in einem MS-Heimnetz via Router).
Gibt es in Java überhaupt eine Möglichkeit die restlichen Rechner im Netz zu identifizieren? Oder muss man da externe Programme bemühen?
Ich habs schon mit nem Programm aus der Java-Insel probiert aber das bringt mich wie gesagt nur bis zu meinem Router. Auch das entsprechende Tutorial von Sun war nicht besonders aufschlussreich. Daher wende ich mich an euch, vielleicht hatte ja jemand schonmal das Problem.

Vielen Dank schonmal

taouri
 
T

tuxedo

Gast
Such mal nach dem Stichwort: Multicast

Geht aber nur in lokalen Netzen und nicht übers Internet (da kommst du ohne Index-Server nicht weiter).

- Alex
 

taouri

Aktives Mitglied
Vielen Dank erst mal für die schnelle Antwort.

Wenn ich den Weg richtig verstanden habe, dann versucht man also über ein MulticastSocket eine Nachricht an alle anderen im Netz zu schicken und wartet dann auf Antwort. Ist das soweit richtig? Mein Problem wäre dann: Was mache ich mit Rechnern auf denen das Partnerprogramm gerade nicht läuft? Gibt es auch eine Möglichkeit die anderen Rechner einfach aufzulisten, ohne sie kontaktieren zu müssen?

Vielen Dank

taouri
 
T

tuxedo

Gast
Jupp, hast du soweit richtig verstanden.

Wer allerdings nicht auf Nachrichten der Multicastgruppe hört, kann nicht antworten.

Dann gibts nur noch den Broadcast. Aber wie und ob das mit Java möglich ist: Keine Ahnung. Hab ich nie probiert. Aber was willst du mit Rechnern auf denen die Anwendung nicht läuft? Was haben die von deinem Chat?

- Alex
 

taouri

Aktives Mitglied
Ich glaube dazu sollte ich erst einmal erklären, wie das ganze überhaupt funktionieren soll:

Ich wollte das Ganze ein wenig wie ICQ aufbauen, das heißt wir haben ein Center, in dem Alle Teilnehmer (in diesem Fall alle im Netzwerk) aufgelistet werden. Ist der entsprechende Teilnehmer da, wird er online angezeigt, ansonsten offline (daher auch ohne laufendes Programm).
Aber vermutlich wäre es in diesem Fall einfacher, sich die offline-user zu sparen und wirklich nur die aufzunehmen, die gerade on sind oder on gehen.

Auf jeden Fall vielen Dank

taouri
 
G

Gelöschtes Mitglied 5909

Gast
alle chat clients müssen sich regelmäßig melden.
Tut einer dies nicht -> offline

und wenn du noch ne übersicht haben willst wer offline ist,
muss sich jeder client vorher einmal "registrieren" (sei es "hallo, es gibt mich" oder "hallo, ich bin hugo")
 
T

tuxedo

Gast
Wenn du eh einen "Centerä" hast, wozu dann der quatsch mit dem "andere Rechner im Netz finden"? Da eh jeder den Center kennt, kann der doch die Aufgabe, wie raiL ja schon beschrieben hat, übernehmen.

Machst du die Chat-Kommunikation direkt zwischen den Clients aus, oder geht alles über den Server? Oder hast du gleich eine Fallback-Strategie wenn P2P zwischen den Clients nicht geht, dass das ganze dann über den Server geht?

Hast du schon mal an RMI gedacht? Wenn das ganze noch übers Internet laufen können soll/muss, kannst du dir auch mal SIMON anschauen (siehe Signatur).

Sowohl bei SIMON als auch bei RMI musst du dich nicht explizit immer wieder am Server melden damit der noch weiß dass du da bist. "Intern" läuft da eine Art Ping-Pong in regelmäßigen Abständen ab mit dem geprüft wird ob der Client/Server noch da ist. Bei beiden lässt sich der Intervall einstellen.

- Alex
 

taouri

Aktives Mitglied
Also Danke nochmal aber ich hab es jetzt so geregelt, dass sich jeder an und auch wieder abmelden muss. Das Ganze läuft direkt P2P ohne zentralen Server (mit Center meinte ich nämlich eigentlich ne GUI, in der die Nutzer aufgelistet sind ;-) ). RMI hatte ich mir auch schon überlegt aber damit habe ich streckenweise schlechte Erfahrungen gemacht, sobald Firewalls im Spiel sind.
Auf jeden Fall nochmal vielen Dank an alle

taouri
 
T

tuxedo

Gast
Deshalb hab ich ja SIMON erwähnt ;-) *NochmalMitDemZaunpfahlWink*

- Alex
 

taouri

Aktives Mitglied
Hallo nochmal,

Ok, anscheinend hab ich ein neues Problem: Ich hab jetzt zwar alles auf Multicast umgestellt aber leider bekomme ich die Multicast-Adresse nicht heraus (die IP meines Router ist angeblich keine Multicast-Adresse) und ehrlich gesagt habe ich keine Ahnung, wie ich diese Adresse herausbekommen soll.
Kann mir da jemand helfen?

Vielen Dank mal wieder ;-)

taouri
 
T

tuxedo

Gast
Multicast über Routergrenzen hinweg ist problematisch. Der Router muss das abkönnen. Und wenn der Router dich ins Internet verbindet hast du eh verloren: Kenne keinen "herkömmlichen" Provider der Multicst erlaubt ;-)

Wie gesagt: Ohne zentralen Server hast du im Falle der Kommunikation über das Internet - zu deutsch gesagt - "verschissen".

- Alex
 

taouri

Aktives Mitglied
Nein, nein, das soll nicht das Problem sein. Das ganze spielt sich nur im lokalen Netz ab, mit dem Internet hab ich da noch gar nichts zu tun. Das würde ich auch nie über Sockets machen ;-). Es geht mir nur darum im lokalen Netz (allerdings auch durch Router verbunden) den Multicast zu fahren.

Gruß

taouri
 
T

tuxedo

Gast
taouri hat gesagt.:
Nein, nein, das soll nicht das Problem sein. Das ganze spielt sich nur im lokalen Netz ab, mit dem Internet hab ich da noch gar nichts zu tun.

Na sag das doch gleich.

Das würde ich auch nie über Sockets machen ;-).
Das ist jetzt nicht dein ernst!!?? Erklär mir doch bitte mal wie du sonst im Internet eine Verbindung aufbaust? Zumindest ist mir auch TCP/IP Ebene keine andere Möglichkeit bekannt.

Es geht mir nur darum im lokalen Netz (allerdings auch durch Router verbunden) den Multicast zu fahren.

Wie gesagt: Die Router müssen Multicast beherrschen (und das kann nicht jeder). Tun sie das nicht: Sehr schlecht. Kläre also erstmal ab ob die das können. Wenn nicht, solltest du mal nach Broadcast schauen. Das klappt vermutlich schon eher:

http://de.wikipedia.org/wiki/Broadcast

Siehe auch:

http://www.java-forum.org/de/viewtopic.php?t=58752&postdays=0&postorder=asc&start=0

Da wurde das Thema Broadcast denke ich ausreichend tief behandelt.

- Alex
 

taouri

Aktives Mitglied
Hi nochmal,

also mit Internet und Socket hast du natürlich recht, da hab ich Blödsinn geredet, war wohl nicht mehr ganz da. :wink:
Die Lösung mit dem Broadcast ist grundsätzlich natürlich eine schöne Idee, Problem ist nur, dass ich bei Verbindungsaufbau mit der Adresse 255.255.255.255 (so wie es in genanntem Link beschrieben wurde) eine ConnectException bekomme die mir da sagt: "Address is invalid on locale machine, or port is not valid on remote machine". Dass mein Router den Port ausgehend sperrt kann ich mir eigentlich nicht vorstellen, insbesondere da der Port 4711 von keinem anderen Dienst belegt sein dürfte. Daher hat wohl mein PC ein Problem mit der Adresse.
Über Lösungsansätze würde ich mich sehr freuen.

Gruß

taouri
 
G

Gelöschtes Mitglied 5909

Gast
du darfst nicht 255.255.255.255 schicken,
sondern nur die hostadresse soll 255 sein (kommt auf deine LAN IP an - siehe wiki artikel)

desweiteren funkltioniert es wie gesagt nicht übers internet
und meines wissens auch nicht wenn ein weiterer router / switch dazwischen ist
 
T

tuxedo

Gast
Öhm, die Seite enthält soweit ich das sehen kann keinen Code-Schnipsel. Aber erklärt ist es trotzdem gut.

- Alex
 
G

Gelöschtes Mitglied 5909

Gast
oben aufm pfeil rechts clicken dann sind da beispiele
 
T

tuxedo

Gast
Ah, jetzt. Nach Navigationspfeilen sieht das aber nicht aus, so klein wie die sind. Auf meinem 24" fallen die als solche gar nicht auf. Sieht mehr nach "Deko" aus.

- Alex
 

taouri

Aktives Mitglied
Leider funktioniert das nicht so ganz. Ich habe mich im übrigen auch über die 255.255.255.255 gewundert aber exakt so stand es nun einem in dem verlinkten Thread. Natürlich habe ich auch versucht die normale Broadcast-Adresse zu benutzen, sprich die: 192.168.1.255 - die führt aber zum selben Fehler wie die 255.255.255.255 . Und auf der verlinkten Website habe ich nur Codeschnipsel zum Thema Multicast, nicht aber Broadcast gesehen und Multicast funktionier bei mir nicht.
Wie bereits gesagt hab ich mit dem Internet nichts am Hut, das spielt sich alles lokal ab. Allerdings läuft das Netwerk wie bereits gesagt über einen Router. Vielleicht erlaubt der keine Broadcasts, da hab ich keine Ahnung (war da nicht was wie: Router trennen Broadcast-Domänen?).
Auf jeden Fall gehen mir langsam echt die Ideen aus. Hat vielleicht noch jemand eine? Ansonsten lege ich das Projekt einfach ad acta :roll:
Danke nochmal

Gruß

taouri
 

Lulumann6

Aktives Mitglied
broadcast senden:
Code:
socket = new DatagramSocket();
ia = InetAddress.getByName("255.255.255.255");
dgram = new DatagramPacket(data, data.length,ia, port);
socket.send(dgram);
broadcast empfangen:
Code:
socket = new DatagramSocket(port);
gram = new DatagramPacket(data, data.length);
socket.receive(dgram);

damit sollte es aufjedenfall klappen, tut bei mir auch
 

taouri

Aktives Mitglied
Vielen Dank Lulumann, auf jeden Fall bekomme ich keine Fehlermeldung mehr. Im Netwerl konnte ichs bisher noch nicht testen, ich melde mich dann noch mal.

Gruß

taouri
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Eine etwas andere Frage: Sicherheit Netzwerkprogrammierung 5
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
c_sidi90 Alle Rechner im Netzwerk ermitteln Netzwerkprogrammierung 17
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
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
A Broadcast - senden eines Packetes an alle rechner im netz Netzwerkprogrammierung 15
D Zugriff auf Rechner im Lan Netzwerkprogrammierung 2
S Kapselung der Netz-Objekte Netzwerkprogrammierung 3
N Gedankenspiel Synchronisation zweier Datenbanktabellen übers Netz Netzwerkprogrammierung 4
L Größe einer Datei auslesen die im Netz liegt Netzwerkprogrammierung 4
W browse / durchsuchen übers netz Netzwerkprogrammierung 2
G Buchinformationen aus dem Netz abrufen? Kostenloser Service? Netzwerkprogrammierung 3
M Daten übers Netz verschlüsselt übertragen? Wie? Netzwerkprogrammierung 18
D dateien kopieren, am localhost funktionierts, im netz nicht Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben