Socket UDP Chat Verbindungsproblem im WWW (Server sendet ins leere)

A

Athikka2

Gast
Hallo zusammen!

Ich baue gerade einen VoIP chat, der über UDP geht nach dem einfachen Client Server modell:

Ein Server mit fixer IP, der die Nachrichten bzw. bytes dann an den jeweilig anderen Client weiterleitet.
und die Clients die sich mit dem Server im Internet verbinden können (selber jedoch keine fixe IP haben)

nun habe ich ein Problem, und zwar dass es im lokalen Netzwerk geht (Client1 sendet paket an Server, dieser leitet es an Client2 weiter->erfolg), also die IP adressen klar sind.

jedoch kommt nichts mehr an sobald ich dasselbe im internet mache (Client1 sendet paket erfolgreich an Server, dieser leitet es weiter an Client2 - es kommt jedoch nie etwas an) - ich denke hier dass der Server es an die (bei der verbindung) von Client2 übergebene IP sendet, die jedoch bereits irgendein anderer rechner fix da draußen besetzt hat.

Das komische ist, dass per TCP alles reibungslos geht...


kann mir wer helfen?
muss ich hier tunneln? oder wie kann der Server die erhaltene nachricht richtig weiterleiten??

bitte um Hilfe!


Vielen Dank schon im Vorraus!

lg Niko
 
A

Athikka1

Gast
Hallo

ja klar, ich versuchs in einer Kurzversion - es liegt schließlich an der übertragung:

am server läuft folgendes:

verbindungen annehmen und speichern:
Java:
while (listen) {
	try {
		Socket s = null;
		s = ss.accept(); // blockiere, bis Client-Request kommt
									
		if(ss.isClosed()) return null;
						
		UserSocket us = new UserSocket(s);  //darin wird INetAdress und Socket der verbindung gespeichert (zum weiterleiten)
		

		connections.add(us);
					
		
	} catch (SocketException e) {
		System.out.print("Socket geschlossen");
	} catch (IOException e) {
		e.printStackTrace();
	}		
}


das weiterleiten geht dann so (im eigenen thread der "horcht" sobald was ankommt natürlich):


SERVER EMPFÄNGT PAKET, SENDET JEDOHC NICHT / KORREKT!

Java:
public void run(){
			int datalen = 1201; (=die genaue größe eines im netzwerk gesendeten packages)
//die packages müssen alle dieselbe größe haben sonst kann er nicht empfangen wenn kleiner oder grˆfler! (fixe grˆfle wichtig!)
//die größe MUSS genau 1201 sein sonst wird nicht übertragen! komisch, aber ok!
			
			byte[] data = new byte[datalen];
			System.out.println("           ----------- OPEN ------------");

			while(redo && udpListener != null){
				
				DatagramPacket packet = new DatagramPacket(data,data.length);
				try {
//					System.out.println("           ----------- RECIEVE ------------");

					udp.receive(packet);
				} catch (IOException e) {
					e.printStackTrace();
				}
//				System.out.println("           ----------- RECIEVED READY: ------------");

				System.out.println("Datalength: " + packet.getLength());
				
			
				if(packet.getData().length >= 0){
					
					//paketinfos (sprache) aus dem übertragenen byte array herausholen
					UDPPackage pg = getUDPPackageFromByteArray(packet.getData());
					
					//an konferenz=anderer user weiterleiten zur weiteren verarbeitung:
					getConferenceByID(pg.conferenceID).VOIP_processUDPPackage(pg); (EMPFANG OK!, SENDEN SCHLÄGT FEHL!)

				}
			}

			
			udp.close();
			
			
		}

und VOIP_processUDPPackage(pg) versendet das erhaltene paket (HIER IST DER FEHLER - es kommt nie etwas an!


Java:
		public void VOIP_processUDPPackage(UDPPackage pg) {
		
			try {
				DatagramSocket toSocket = new DatagramSocket();
				
				//ANMERKUNG: nicht an sich selbst senden!
				
				for(UserSocket s : activeCall){
					if(!s.username.equals(pg.from.trim())){ //nicht an sich selbst senden!
						byte[] arr = null;
						try {
							arr = toBytes(pg); //mache byte array aus klasse!
						} catch (IOException e1) {
							e1.printStackTrace();
						}
						DatagramPacket dp = new DatagramPacket(arr,arr.length,s.udpAdress, SEND_UDP_Port);

						//SEND_UDP_Port = der "horch" port des empfängerclients)
						//s = socket das bei der verbindung (per tcp übergeben wurde)
						//s.udpAdress = 	beim erstellen des UserSockets(Socket s): 
						//			dort wird:	this.udpAdress = s.getLocalAddress(); //ist das hier der fehler??
						//lokal geht es ja im netzwerk, vl weil dort die IPS fix sind? welche adresse muss ich nehmen?



						try {
							toSocket.send(dp); //SENDE! ES KOMMT NUR NICHTS AN...
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
				}

				
			} catch (SocketException e) {
				e.printStackTrace();
			}
			
			
		}


Vielen Dank!
 

athikka

Aktives Mitglied
hallo

jetzt bin ich endlich angemeldet (hatte pw vergessen) :)

ich denke dass ich hier Hole-Punching anwenden muss oder?

also weil die IP die der client dem server per TCP übergibt gilt ja nicht da es eine lokale adresse ist (192.168....)

wie komme ich nun an die richtige IP des clienten damit ich ihn von außen(WWW) erreichen kann?
 
G

Gast2

Gast
nimm dafür dyndns.org oder einen anderen Anbieter ... Alternativ auch ein eigener Root-Server ... dyndns läßt nur 5 Accounts zu
 

athikka

Aktives Mitglied
Hallo

Danke für die Antwort,

ich habe ja einen Computer mit fixer IP im WWW (zu dem sich die clients verbindet und wo die nachrichten immer weitergereicht werden)

nur ich brauche eben die IP meiner clients.. wie komme ich dazu?
 

athikka

Aktives Mitglied
Ja Danke, aber was ich brauche ist UDP

per Socket (TCP) läuft alles reibungslos (senden von Client1, weiterleiten bei Server, empfangen bei Client2)...

irgendwie kommt UDP einfach nicht an! komisch...
also DatagramSocket
 
G

Gast2

Gast
muss es unbedingt UDP sein? ... DatagramSocket sollte eine ähnliche Funktion haben wie Socket

wenn Du über Hole-Punching nachdenkst, solltest Du lieber darüber nachdenken den Port einfach freizugeben ... wenn aber Kunden das machen müssen das nutze liebere einen Root-Server - Kunden wollen nur benutzen (nicht mal installieren)
 

athikka

Aktives Mitglied
hallo

ja muss leider UDP sein da es VOIP ist... sonst könnte ich gleich alles über TCP machen...

es ist auch für kunden, also muss ich das in die hände nehmen...
 

athikka

Aktives Mitglied
oder, was brauche ich für die verbindung damit UDP korrekt sendet?

TCP habe ich ja auch stehen und der liefert mir ja die InetAdress zurück

brauche ich jetzt

getInetAddress oder getLocalAddress oder getRemoteSocketAddress oder getLocalSocketAddress?

hat da wer erfahrung? welche ist die richtige IP zum kommunizieren?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
L Chat Fenster Netzwerkprogrammierung 1
J Socket Ein Chat Server Tutorial Netzwerkprogrammierung 8
S Java Chat Server Netzwerkprogrammierung 8
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
P Chat in Java Netzwerkprogrammierung 3
C Java Chat Admin Kenzeichnung Netzwerkprogrammierung 14
D Chat Server/mehre Client Netzwerkprogrammierung 9
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
C Microsoft Comic Chat Netzwerkprogrammierung 0
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
O Chat (Server) sendet an verschieden Benutzer. Netzwerkprogrammierung 10
J Chat programmieren Netzwerkprogrammierung 12
L Chat Server programmieren Netzwerkprogrammierung 10
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
K chat Netzwerkprogrammierung 13
F RMI einfacher Chat - Callbacks(?) funktionieren nicht Netzwerkprogrammierung 7
L Socket Chat funktioniert nicht Netzwerkprogrammierung 2
T Socket Java Chat Netzwerkprogrammierung 2
xDarkSunx Chat JFrame Netzwerkprogrammierung 3
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
E JAVA Chat Netzwerkprogrammierung 19
C Java Chat funktioniert nicht richtig Netzwerkprogrammierung 6
I Chat-Client empfängt nichts vom Server Netzwerkprogrammierung 3
A Multi-User-Chat Netzwerkprogrammierung 2
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
E Userliste für Chat Applet Netzwerkprogrammierung 4
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
J Framework/ Muster für Chat-ähnliches Programm gesucht Netzwerkprogrammierung 2
AMStyles Client Server basierter Chat Netzwerkprogrammierung 7
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
P Socket Chat selbst bauen + Multiusereditor Netzwerkprogrammierung 13
T Java Chat über UDP Netzwerkprogrammierung 7
Developer_X Habe fragen zur Chat Programmierung Netzwerkprogrammierung 4
P Java Multiuser Chat hohe Systemauslastung Netzwerkprogrammierung 24
D Hilfe ich komme bei meinem UDP chat Server nicht mehr weiter Netzwerkprogrammierung 9
B Die alte Leier: "Chat" Netzwerkprogrammierung 3
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
S Client-Server Chat Problem nur im lokalen Netztwerk Netzwerkprogrammierung 23
DamienX Chat Socketserver/Client. wo ist das Problem? Netzwerkprogrammierung 2
J Client-Client-Chat ohne Serverbeteiligung Netzwerkprogrammierung 2
A Wichtig für einen Chat? Netzwerkprogrammierung 4
S Java Applet Chat Grundsatzfrage Netzwerkprogrammierung 6
R Java Chat über Inet connecten Netzwerkprogrammierung 3
F Chat Programm. Verständnisfrage while-Schleife Netzwerkprogrammierung 7
P Probleme bei Chat programm Netzwerkprogrammierung 2
C Voice Chat Netzwerkprogrammierung 3
G FAQ Chat geht nicht ? Netzwerkprogrammierung 4
T Schriftfarbe im Chat ändern Netzwerkprogrammierung 2
G ActionEvent klappt beim Chat nicht Netzwerkprogrammierung 5
J Kleines Problem mit Chat Server Netzwerkprogrammierung 2
T Chat-Client Netzwerkprogrammierung 12
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
T Chat mit mehreren Clients Netzwerkprogrammierung 3
C Chat , Streamproblem, PumpingException, Danke Netzwerkprogrammierung 2
S RMI Chat Problem, Client bekannt machen Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
K Lokaler Chat Netzwerkprogrammierung 5
S Chat aufs Internet ausweiten Netzwerkprogrammierung 5
J Router behindert Chat Netzwerkprogrammierung 9
S Knuddels Chat System: Bot / Nachrichten verschicken? Netzwerkprogrammierung 6
G Chat - was brauch ich Netzwerkprogrammierung 2
André B. Brauche Hilfe bei Chat Netzwerkprogrammierung 6
K Problem mit "Chat" Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
Paule Acces denied bei Chat Netzwerkprogrammierung 6
B Multi-chat Problem Netzwerkprogrammierung 3
N Java Chat-Problem Netzwerkprogrammierung 4
G Java Chat mit HTML Cleint Netzwerkprogrammierung 3
G Chat Programm - was ist los? Netzwerkprogrammierung 9
A server mit 2 Ports : Mit und ohne SSL Chat system Netzwerkprogrammierung 10
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
R Mini-Chat löst BindException aus Netzwerkprogrammierung 7
F Multiclient Chat Netzwerkprogrammierung 12
K Chat: Nur 1 Verbindung zum Server möglich :( Netzwerkprogrammierung 6
K Chat: Verbindung kommt nicht zu stande Netzwerkprogrammierung 6
S JAV07P SGD client/server chat Netzwerkprogrammierung 4
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
S Einfacher Multiuser chat in java Netzwerkprogrammierung 18
S Netzwerk Verbindungsproblem mit Cajo Netzwerkprogrammierung 5
H Verbindungsproblem über das Internet Netzwerkprogrammierung 9
S Verbindungsproblem Netzwerkprogrammierung 5
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
E Server mit GUI Netzwerkprogrammierung 4
E FTP FTPS Server gibt Fehlernachricht "522 SSL/TLS required on the data channel" zurück Netzwerkprogrammierung 1
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
Eigenen Rechner als Server? Netzwerkprogrammierung 16
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
J Datei Download vom Server Netzwerkprogrammierung 8
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23

Ähnliche Java Themen

Neue Themen


Oben