DatagramSocket über das Internet benutzen

F

FragenderHier

Gast
Hey,

ich hätte mal eine Frage, unzwar wie kann man mit dem DatagramSocket (UDP verbindung von Java) über das Internet auf einen zweiten zugreifen (Client / Server prinzip)?
Denn normalerweise wird beim Server der DatagramSocket über nur einen Port eingestellt und beim Client ohne einen parameter in der Klammer, dafür eben beim Paket vom client die angaben host + port, was jedoch nicht funktioniert.

lg
 
F

FragenderHier

Gast
Wie schon gesagt.. es besteht keine verbindung.. ich versuche es mal näher zu erläutern durch ein wenig code:

Server:
Java:
byte[]              buffer	 = new byte[ 65508 ];
DatagramSocket socket = new DatagramSocket( port );
DatagramPacket packet = new DatagramPacket( this.buffer, this.buffer.length );
....
socket.receive( packet ); //Warten bis ein paket eingeht

Mehr brauche ich vom Server-Code nicht zu zeigen, da es nicht weitergeht.
Die internet ip vom pc hole ich mir über die seite wieistmeineip.de (via code, auch schon überprüft)
Der port wird dabei manuell eingesetzt... unzwar durch einen, auf dem ich auch manchmal spiele server laufen lasse, von daher sollte es damit keine probleme geben.

Client:
Java:
DatagramSocket socket = new DatagramSocket();
byte[]               buffer	 = new byte[ 65508 ];
DatagramPacket  packet = new DatagramPacket( this.buffer, this.buffer.length );

dann wird vom client ein packet zum host verschickt, das dieser die ip + port vom client bekommt und diese somit kommunizieren können, offline funktioniert das auch wunderbar, aber sobald ich die online ip benutze nicht mehr.

lg
 
S

SlaterB

Gast
hmm ja, ich habe jetzt auch das Beispiel probiert und mit localhost gehts, mit der Internetadresse nicht,
aller Code arbeitet, nur scheint das Paket nicht anzukommen,
ich kann dann dazu leider nichts helfen

edit: mogel scheint es ja zu haben, gleich mal testen ;)
edit: BindException: Cannot assign requested address ;(
 
Zuletzt bearbeitet von einem Moderator:
F

FrangenderHier

Gast
Ja ich habe das auch schon alles durchgelesen, da steht zwar überall das es für lokale ports und netzwerkadressen ist, aber beim socket steht das ebenso und es funktioniert, von daher bringt mich das nicht sonderlich weiter.

lg
 
S

SlaterB

Gast
jetzt läuft es bei mir,
wieistmeineip.de lieferte nur die IP des Providers, bzw. irgendeine abweichende,
die eigene mit ifconfig unter Linux oder ipconfig unter Windows abfragen,
bei Server-Deklaration + Client-Senden angeben

edit:
ein [c]socket = new DatagramSocket(4445);[/c]-Server funktioniert dann auch zusammen mit der richtigen IP für Client..
 
Zuletzt bearbeitet von einem Moderator:
F

FragenderHier

Gast
Moment.. die IP ist dann immernoch Lokal, von daher wird das ergebnis das gleiche sein wie bei localhost, bzw 127.0.0.1

lg
 
S

SlaterB

Gast
keine Ahnung,
Java:
		InetAddress address = InetAddress.getByName("192.168....");
		System.out.println(address.getHostAddress());
		System.out.println(address.getHostName());
habe ich gerade, kann meinetwegen auch ein andere Umschreibung von localhost sein,
jedenfalls kommt da als hostname auch mein Rechnername raus,

bei der öffentlichen Adresse erscheint als hostname "pool.mediaWays.net" usw.
(bei deiner IP die ich hier im Forum neben dem Posting steht sehe ich das auch in etwa + eine Stadt die es gar nicht gibt? ;) )

mehr kann ich nun wohl wirklich nicht mehr beitragen
 
Zuletzt bearbeitet von einem Moderator:

SkonroX

Aktives Mitglied
So erst einmal richtig eingeloggt (FragenderHier)..
also du kannst sehen das die IP lokal ist, da ipconfig, bzw ipconfig /all nur die konfiguration deines lokalen netzwerkes anzeigt.
Dazu kommt über dem befehl tracert (IP) auch wie du schon sagtest, der Hostname raus, den du im Netzwerk eingestellt hast, jedoch ist es bei den NAT adressen aus dem internet anders.. da läuft alles über den provider, aus dem grunde ist es auch für versteckte ermittler kein problem deine adresse herauszufinden, da diese vom provider auf anfrage herausgestellt werden (natürlich nicht an jeden, wobei ich glaube das es da auch schon diverse seiten gibt, bei denen man über die IP den standort einer person herausfinden kann).

lg
 
G

Gast2

Gast
ein [c]socket = new DatagramSocket(4445);[/c]-Server funktioniert dann auch zusammen mit der richtigen IP für Client..

öhm - nein ... weil

Moment.. die IP ist dann immernoch Lokal, von daher wird das ergebnis das gleiche sein wie bei localhost, bzw 127.0.0.1
*ding* *ding* *ding* ... [c]new DatagramSocket(port)[/c] bindet nur auf 127.0.0.1 ... nimmt somit nur Verbindungen von der eigenen Maschine entgegen ... alles was sonst irgendwie ankommt wird ignoriert ... entweder auf die IP binden welche zum Internet (bzw. lokalem LAN) führt - oder - gleich an "0.0.0.0" binden (dann frist der Server auf allen Netzwerkverbindungen)

Rest ist einfach nur NAT & Portforwarding im Router

hand, mogel
 
S

SlaterB

Gast
bist du dir sicher mit deinen Erläuterungen (edit: auch wenn sie schon sehr überlegt klingen ;) ) ?
zum einen liefert
Java:
public class Test {
    public static void main(String[] args)    throws Exception {
        DatagramSocket socket = new DatagramSocket(4445);
        System.out.println(socket.getLocalAddress());
    }
}
als Ausgabe bereits '0.0.0.0/0.0.0.0', welche du vorgeschlagen hast,
zum anderen steht in der Beschreibung
public DatagramSocket(int port, InetAddress laddr)
Creates a datagram socket, bound to the specified local address. [..] If the IP address is 0.0.0.0, the socket will be bound to the wildcard address, an IP address chosen by the kernel.

public DatagramSocket(int port)
Constructs a datagram socket and binds it to the specified port on the local host machine. The socket will be bound to the wildcard address, an IP address chosen by the kernel.
von lokal/ nicht lokal steht da wenig, mal abgesehen davon dass alles was nicht als Nachricht an fremde Rechner geht, sondern den eigenen Socket/ Port betrifft, als 'local' bezeichnet wird,

ich interpretiere das so dass der Default 0.0.0.0 ist, auf alles hört, warum sollte auf 127.0.0.1 eingeschränkt werden?
testen kann ich es freilich kaum

edit:
habe soeben noch verschiedene DatagramSocket angelegt, ob ohne oder mit "localhost", "127.0.0.1", "0.0.0.0" oder der IP aus ipconfig,
der DatagramSocket hat (unter Windows) immer "0.0.0.0/0.0.0.0" als Ausgabe und akzeptiert beliebige lokale Nachrichten,
hmm, das hilft wohl nicht weiter ;)
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen GlassPane über JScrollPane legen Java Basics - Anfänger-Themen 6
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
B großzügiges Pixelraster über Bildschirm legen Java Basics - Anfänger-Themen 7
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
S Java über SSH Java Basics - Anfänger-Themen 13
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
W char über die Konsole? Java Basics - Anfänger-Themen 7
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
A Array Ansprache einer Zelle über Punktnotation? Java Basics - Anfänger-Themen 3
O Java über cmd benutzen ? Java Basics - Anfänger-Themen 5
J Variablenzugriff über string Java Basics - Anfänger-Themen 18
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
M Java Kompilieren über Package grenzen hinaus Java Basics - Anfänger-Themen 4
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
B OOP-Anfänge über CMD + Editor Java Basics - Anfänger-Themen 30
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
J Gefilterten Stream über die Konsole ausgeben Java Basics - Anfänger-Themen 1
S Variablen Klassenvariable über Objekt aufrufen Java Basics - Anfänger-Themen 16
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
L Iterieren über eine CSV Datei Java Basics - Anfänger-Themen 7
I GUI über Eclipse oder NetBeans Java Basics - Anfänger-Themen 23
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
O Methode über Leerzeichen Java Basics - Anfänger-Themen 13
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
J MySQL Datumsabfrage über ResultSet in Java-Servlet Java Basics - Anfänger-Themen 4
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
R Keine Verbindung zu MySql über Netbeans Java Basics - Anfänger-Themen 15
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
G Arraynamen über eine Schleife ansprechen Java Basics - Anfänger-Themen 4
S Bild über JButton legen Java Basics - Anfänger-Themen 3
temi Druckeransteuerung über ESC-Sequenz Java Basics - Anfänger-Themen 21
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
B Könnte jemand über dieses jurze Javaprogramm schauen? Irgendwas funktioniert mit der z-Varible nicht Java Basics - Anfänger-Themen 2
M Java Programm über Batch-Datei ausführen Java Basics - Anfänger-Themen 1
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
P Threads Prozess kann nicht über die GUI gestartet werden Java Basics - Anfänger-Themen 8
T CMD über Java-Programm aufrufen Java Basics - Anfänger-Themen 2
X Finde die Files über FTP nicht Java Basics - Anfänger-Themen 4
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
P Programm kann über CMD nicht ausgeführt werden Java Basics - Anfänger-Themen 2
E Frage über Speichern und Ausgabe Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
X Betriebssytem interne Consolen Commands über Java starten Java Basics - Anfänger-Themen 2
J ArrayList über verschiedene Klassen verwenden Java Basics - Anfänger-Themen 7
A .jar über Webbrowser aufrufen Java Basics - Anfänger-Themen 2
D Ausgabe über JLabel Java Basics - Anfänger-Themen 12
L Erste Schritte Arrays über eine for Schleife ansprechen. Java Basics - Anfänger-Themen 6
MiMa Datentyp Short Wert zuweisen über Methode Java Basics - Anfänger-Themen 2
K Objekt soll Anwendung über Änderungen informieren Java Basics - Anfänger-Themen 8
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
F Gewichteter Mittelwert über eine Zeitperiode Java Basics - Anfänger-Themen 3
B Schleife über einen Container Java Basics - Anfänger-Themen 7
Henri Paare Frage über Java Programmierung Java Basics - Anfänger-Themen 10
T jar von stick aus über jre auf stick starten Java Basics - Anfänger-Themen 6
L Iterieren über ArrayList Java Basics - Anfänger-Themen 1
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
F Methoden aus anderer classe über nehmen Java Basics - Anfänger-Themen 10
N .propertiesdatei über Relativen Pfad einlesen lassen Java Basics - Anfänger-Themen 5
G Input/Output CSV-Datei über Java-Programm erstellen, Zeichensalat Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben