Hallo liebe Java-Forum Gemeinde!
Ich habe ein Problem was UDP (Datagramsockets) angeht.
Und zwar baue ich gerade einen VoiceOverIP chat mit UDP
Das ganze funktioniert schon ganz gut - solange es local läuft (Server: localhost, Client: localhost) - also alles auf einem rechner.
Nun habe ich aber einen Rechner der als Server fungiert und eine feste IP hat (im Internet), und zwei Clients die normal im Internet hängen (ohne statische IP), die sich aber zum Server verbinden können, der dann die Daten immer brav an den jeweils anderen Client weiterleitet.
Das Problem ist nun: Der Text-Chat geht über TCP (Sockets), aber wenn ich wen anrufen will, über UDP (Geschwindigkeitswegen)
Ich versende immer Klassen (Serialisiert) per UDP (Paketgröße ist fix mit 1201 Bytes).
Wie gesagt, Lokal geht es wunderbar, aber sobald ich diese Verbindung übers Internet mache (mit meinem Server) geht es ins nichts (ich sende und sende aber es kommt nichts an obwohl der Server erfolgreich weiterleitet.
Die Frage ist nun, wie ich die einzelnen Pakete an die richtige Client-Adresse weiterleiten kann (mit Socket.getInetAdress()) geht es auf alle Fälle ins nichts - ich denke mal das ist weil die IP der Clients nicht statisch ist.
Wie bekomme ich die "Ziel"-IPs an die ich die Daten weiterleiten soll? Wie gesagt die clients sind auch über TCP mit dem Server verbunden - also schriftlich chatten kann ich - mir fehlt einfach die IP der Clients damit ich die UDP-Pakete richtig versenden kann, damit sie eben auch bei den Clients ankommen.
Also wie komme ich an die IP, an die ein Socket per OutputStream sendet? Das wäre doch des Rätsels lösung...
Kann mir da wer helfen?
Vielen Dank schonmal im Voraus,
Niko
Ich habe ein Problem was UDP (Datagramsockets) angeht.
Und zwar baue ich gerade einen VoiceOverIP chat mit UDP
Das ganze funktioniert schon ganz gut - solange es local läuft (Server: localhost, Client: localhost) - also alles auf einem rechner.
Nun habe ich aber einen Rechner der als Server fungiert und eine feste IP hat (im Internet), und zwei Clients die normal im Internet hängen (ohne statische IP), die sich aber zum Server verbinden können, der dann die Daten immer brav an den jeweils anderen Client weiterleitet.
Das Problem ist nun: Der Text-Chat geht über TCP (Sockets), aber wenn ich wen anrufen will, über UDP (Geschwindigkeitswegen)
Ich versende immer Klassen (Serialisiert) per UDP (Paketgröße ist fix mit 1201 Bytes).
Wie gesagt, Lokal geht es wunderbar, aber sobald ich diese Verbindung übers Internet mache (mit meinem Server) geht es ins nichts (ich sende und sende aber es kommt nichts an obwohl der Server erfolgreich weiterleitet.
Die Frage ist nun, wie ich die einzelnen Pakete an die richtige Client-Adresse weiterleiten kann (mit Socket.getInetAdress()) geht es auf alle Fälle ins nichts - ich denke mal das ist weil die IP der Clients nicht statisch ist.
Wie bekomme ich die "Ziel"-IPs an die ich die Daten weiterleiten soll? Wie gesagt die clients sind auch über TCP mit dem Server verbunden - also schriftlich chatten kann ich - mir fehlt einfach die IP der Clients damit ich die UDP-Pakete richtig versenden kann, damit sie eben auch bei den Clients ankommen.
Also wie komme ich an die IP, an die ein Socket per OutputStream sendet? Das wäre doch des Rätsels lösung...
Kann mir da wer helfen?
Vielen Dank schonmal im Voraus,
Niko