Client - Client verbindung

mrno

Erfahrenes Mitglied
Hi,
ich habe mal wieder ein Problem. Ich bin gerade dabei ein tool zu schreiben mit dem man dateien versenden kann. Mein Problem ist das wenn ich sockets verwende die firewall meine verbindungen Blockt(Firewall die ip ranges sperren). Wie kann ich das verwirklichen. Habe jetzt hier im board gelesen das dieses wohl mit jxta möglich sei. Ich habe mir da die beispieldateien angeschaut und verstehe da eine sache nicht. platform: Version control - CVS In dieser Klasse gibt es eine Zeile
try {
config.addRdvSeedingURI(new URI("http://rdv.jxtahosts.net/cgi-bin/rendezvous.cgi?2"));
config.addRelaySeedingURI(new URI("http://rdv.jxtahosts.net/cgi-bin/relays.cgi?2"));
} catch (java.net.URISyntaxException use) {
use.printStackTrace();
}
Was machen diese cgi scripte?

Meine nächste frage ist weil ich das mit jxta noch nicht richtig hin bekommen habe, wie wird eine verbindung bei icq oder skype hergestellt. Da geht ja das datenversenden auch ohne das man bei der firewall etwas frei geben muss.

Hoffe ihr könnt meine fragen beantworten.

mrno
 
Moin!
die CGI Skripte liefern dir eine IP- Liste aktueller global zugänglicher Rendezvous- und Relayknoten. Einfach die Adresse mal in den Browser eingeben und dann sieht man es auch. Diese benötigst du, um überhaupt dich erstmal mit dem Jxta-Netzwerk zu verbinden, um dann auch mit Clients über Subnetzgruppen hinweg kommunizieren zu können.(Rendezvous für Discovery -request, Relays für Routing Aufgaben).
Diese Liste benötigst du allerdings nicht, wenn du nur ein lokales Netz aufbauen willst.

Wie Skype oder ICQ dass handhaben, hab ich keine Ahnung, aber um mit JXTA eine Verbindung über eine Firewall hinweg aufzubauen, muss man meines Wissens eingehende HTTP-Verbindungen erlauben. Diese eingehende Verbindung wird von einem der Rendezvousknoten initiiert.

Hoffe mal, dass hat geholfen!
*grüssle*
MeinerEiner


PS: Juhuu, mein 100. Beitrag ;)
 
Danke für deine schnelle antwort.

Jetzt ist mir noch was eingefallen. Wie macht das ein ftp server. Der standartport 21 ist meistens im router frei gegeben. Aber um diesen möglichst schnell wieder frei zu bekommen wird im passiv mode ein neue port zugewießen. Wie kann dadurch eine verbindung hergestellt werden? Warum blockt da die firewall den port nicht? Wie kann ich das mit java realisieren?
 
Moin!
Der Passivmodus hat nichts mit einem möglichst schnellen freibekommen des Ports 21 zu tun. Du kannst eine FTP Verbindung von jedem anderen beliebigen ClientPort auf den ServerPort 21 initieren. Dieser Port 21 ist der Kommandokanal auf welchem dir dann der Server einen neuen Port zuweist.
Zu diesem Datenkanal verbindest du dich dann wieder und nur über diesen werden dann die Daten ausgetauscht.
Das ist übrigens der Unterschied zum Aktivmodus, bei der der Client den neuen Port bestimmt und der Server sich zu diesem dann verbindet.

Moderne Firewalls erkennen übrigens den Zusammenhang zwischen beiden Kanälen (im Passivmodus) und machen daher beim FTP keine Probleme.

Letztendlich sind es also nur 2 TCP Verbindungen. Und die sollte man mit JXTASockets bzw. JXTAServerSockets recht leicht implementieren können. Ob eine Firewall allerdings dies erlaubt, nun, da bin ich überfragt. Am besten selbst mal austesten.

*grüssle*
MeinerEiner
 
Zurück