Socketprogrammierung: Portangabe

jupp2

Mitglied
Hallo zusammen,

ich habe einen kleinen UDP Server geschrieben,der bei mir auf dem localhost auch funktioniert. Nun möchte ich ihn gerne auf einer anderen Maschine laufen lassen, aber dabei habe ich folgendes Problem.

Der Zielrechner ist unter der IP x auf Port y erreichbar. Auf dem Zielrechner selbst muss ich Port 1234 ansteuern. Ich muss also irgendwie zwei Ports angeben. Da weiß ich nicht weiter. Bis jetzt sieht es so aus:

Java:
InetAddress ip = new InetAddress(InetAddress.getByName(x));
DatagramPacket sendPort = new DatagramPacket(file.getBytes(), file.length(), ip, y);

Aber wie gebe ich den Port auf dem Zielreichner an. In y steht jetzt der Port, auf dem der Zielrechner im Netzwerk lauscht.

Danke
 
Zuletzt bearbeitet:

rme

Top Contributor
Hallo,

die Frage verstehe ich irgendwie nicht - wenn dein Server auf Port 1234 via UDP wartet, dann muss der Client auch Port 1234 verwenden, genau das macht er bei dir ja in Form von y. Welchen Port meinst du mit dem zweiten Port?
 

jupp2

Mitglied
Also ich mein das so:

Ich habe einen Rechner x. Der befindet sich in einer gewissen IP Range. Um von außen den Rechner x zu erreichen, muss ich einen Port y angeben.

Zum Beispiel per SSH: ssh username@ip -p y

Mit der IP und dem Port y kommt mein UDP Paket zu meinem Rechner x. Auf diesem läuft nun mein Server, der auf dem Port z des Rechners x lauscht. z ist der eigentliche Port des Rechners x. y wird vom Netzwerk verwaltet, das Pakete von außen an meinen Rechner x weitergibt.

Vielen Dank
 

rme

Top Contributor
Hm. Eigentlich nicht. In deinem Beispiel sind y und z gleich, und so ist es auch allgemein. Es sei denn, du verwendest eine Port-Weiterleitung, weil du hinter einem Router bist und nach außen keine eigene IP-Adresse hast. Vielleicht meinst du das mit "vom Netzwerk verwaltet"?

In diesem Fall ist der Ablauf so:

- Server lauscht auf Port z
- Router leitet Port y aus dem externen Netzwerk an Port z des internen Netzwerks weiter
- Client verbindet sich mit Port y

Der Client braucht nicht zu wissen, dass seine Anfrage an Port y intern an Port z weitergeleitet wird, deshalb kann man diesen Port auch nicht angeben. Der Server muss wiederum nur wissen, dass der Router ihm die Pakete auf Port z zustellt - er braucht nicht zu wissen, dass seine Clients sich eigentlich mit Port y zu verbinden, deshalb kann man auch dort nur einen Port angeben.
 

Neue Themen


Oben