• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

JAVA - Über Internet mit ServerSocket verbinden

  • Ersteller Mitglied 7974
  • Erstellt am

Mitglied 7974

Gast
Hi!

Weil ich mit ein paar Freunden online Schafkopf spielen will, möchte ich ein eigenes Schafkopfprogramm in JAVA implementieren. Per
Code:
ServerSocket server = new ServerSocket(port);
öffne ich ein neues ServerSocket-Objekt und schiebe es in einen Thread.

So, wenn ich nun also den Server starte kann ich mich per
Code:
telnet localhost <port>
mit dem Schafkopfserver verbinden. Das funktioniert auch mit einem JAVA-Client, der einen Socket zu "localhost" öffnet.
Code:
Socket client = new Socket("localhost", port);

Lokal funktioniert's also. Jetzt möchte ich das aber auch per Internet hinbekommen und stecke gerade fest. Um zu testen, ob mein Schafkopfserver per Internet erreichbar ist, starte ich ihn, ermittle über www.whatismyip.com meine IP und versuche, per telnet auf diese IP zuzugreifen.
Code:
telnet <ip> <port>
Telnet und der JAVA-Client sind allerdings nicht in der Lage, zu der ermittelten IP eine Verbindung aufzubauen. Ping hingegen kann die IP anpingen.

Wie ihr seht, fehlen mir da wohl ein paar Grundlagen zum Thema Internet-Server und -Clients.

Zur Info: Mein Mac verbindet sich über das Speedwort W 500V von T-Com mit dem Internet. Vielleicht könnte es auch daran liegen, dass ich nicht weiß, wie ich mit diesem Gerät meinen Computer im Internet auf einem bestimmten Port freischalten kann (ich weiß nicht mal, wie man diesen Vorgang nennt).

Wer was weiß, melde sich bitte bei mir.

Vielen Dank,
snoopysalive
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
Das heisst "Port-Forwarding" und das musst Du schon aktiviert haben. Ausserdem solltest Du unter OS X die Ports auf der Firewall freischalten.
 

Mitglied 7974

Gast
Danke für die Antwort. Leider funktioniert dein Tipp nicht. Ich habe mich darüber informiert, wie ich mit dem Speedport Port-Forwarding realisiere, und in meinen Firewalleinstellungen wird den entsprechenden Ports ebenfalls jeglicher Netzwerkverkehr gestattet. Dennoch ist mein Rechner weder per ssh noch per telnet im Internet erreichbar.

Reicht denn unter JAVA die Einrichtung eines ServerSockets tatsächlich aus, um auch im Netz erreichbar zu sein? Oder ist es denn überhaupt möglich, vom selben Rechner aus zu testen, ob man per Internet erreichbar ist? Ich meine, wenn ich mich per "localhost" einloggen kann, kann ich mich dann auch über die IP-Adresse einloggen, über die ich im Netz authifiziert bin?
 

MatzeLoCal

Rheinischer Bohnapfel
Registriert
05.01.04
Beiträge
2.422
localhost und die IP mit der du im inet bist sind verschieden.

Wenn du mit der IP mit der du im inet bist deinen rechner ansprichst, dann geht das defintiv raus.

Und ja, bei einem ServerSocket genügt der Port. Welche Port-nummer hast du denn gewählt?
 

Mitglied 7974

Gast
Also, ich habe den Port 8383 gewählt. Ich kenne zwar "Java ist auch eine Insel", lerne JAVA allerdings mit den Büchern "Core Java 2" Bd. 1 + 2 von Cay Horstmann und Gary Cornell.

Dass meine lokale Adresse von der Adresse abweicht, mit der ich zum Internet verbunden bin, ist mir klar und das ist (wahrscheinlich) auch nicht das Problem. Mein Rechner hat die lokale Adresse 192.168.1.2. Im Internet habe ich eine völlig andere Adresse. Wenn ich das Port-Forwarding richtig verstanden habe, liegt das daran, dass sich ja nicht der Rechner selber mit dem Internet verbindet, sondern der Router. Wenn ich also eine Verbindung aufbauen möchte, deren Host-IP die des Routers ist, müsste sich das Port-Forwarding darum kümmern, dass diese Verbindung an 192.168.1.2 weitergeleitet wird. Das passiert aber eben nicht.

Ich habe im Moment zwar leider keine Zeit, aber ich werde nach Mittag mal ein paar Screenshots meiner Systemeinstellungen machen, um dir/euch mal visuell meine Firewall- und Routereinstellungen zu zeigen -- ich glaube nämlich immer noch, dass das Problem in einer falschen OS X- oder Routereinstellung zu suchen ist. Mir ist eben nur nicht klar, wo.
 

Mitglied 7974

Gast
So, hier sind die versprochenen Screenshots. Hier seht ihr meine OS X-Firewall-Einstellungen:
Bild 1.png
Bild 2.png
 

Mitglied 7974

Gast
Und hier die Port-Forwarding-Einstellungen am Speedport W 500V:
Bild 6.png
Bild 4.png
Bild 5.png
 

Mitglied 7974

Gast
(Ja, mit drei Posts hintereinander kann man seine Post-Statistik in die Höhe treiben :innocent: )

Also, wer sich einen Reim darauf machen kann, warum ich meinen JAVA-Server dennoch nicht per Internet ansprechen kann, soll bitte seine Meinung Kund tun. Danke!