1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

JAVA - Über Internet mit ServerSocket verbinden

Dieses Thema im Forum "PHP & Co." wurde erstellt von snoopysalive, 12.01.07.

  1. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    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
     
  2. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    Das heisst "Port-Forwarding" und das musst Du schon aktiviert haben. Ausserdem solltest Du unter OS X die Ports auf der Firewall freischalten.
     
  3. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    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?
     
  4. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
    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?
     
  5. MatzeLoCal

    MatzeLoCal Rheinischer Bohnapfel

    Dabei seit:
    05.01.04
    Beiträge:
    2.421
  6. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    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.
     
  7. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    So, hier sind die versprochenen Screenshots. Hier seht ihr meine OS X-Firewall-Einstellungen:
    Bild 1.png
    Bild 2.png
     
  8. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    Und hier die Port-Forwarding-Einstellungen am Speedport W 500V:
    Bild 6.png
    Bild 4.png
    Bild 5.png
     
  9. snoopysalive

    snoopysalive Allington Pepping

    Dabei seit:
    19.08.05
    Beiträge:
    195
    (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!
     

Diese Seite empfehlen