UDP über ne Firewall

Status
Nicht offen für weitere Antworten.

MarcoBehnke

Bekanntes Mitglied
Argh, ich verzweifel. Ich habe hier einen JavaChat Client, der per UDP Nachrichten an alle bekannten Client schickt.
Meine Firewall habe ich auf ALLOW ALL gestellt und Weiterleitung an meine lokale IP.

So. Der Chat Client verschickt UDP Pakete
Code:
private void sendNewMessage(){
		try {
			DatagramSocket _msgSocket=new DatagramSocket();
		StringTokenizer chatterList = new StringTokenizer(getChatterList()," ");

		String sender = "<"+_chatName+">";
		String msgBody = _chatLine.getText();
		String msg = sender+" "+msgBody+"\n";

		byte[] sendData = new byte[1024];
		sendData = msg.getBytes();

		DatagramPacket sendPacket;
							

		while(chatterList.hasMoreTokens() ) {
			String nextIP = chatterList.nextToken();
			System.out.println("Send msg to " + nextIP);
			sendPacket = new DatagramPacket( sendData, sendData.length, InetAddress.getByName(nextIP), get_msgPort());
			_msgSocket.send(sendPacket);
			System.out.println("Msg sent to " + nextIP + "/" + get_msgPort());
		}
		
		} catch(SocketException e) {
			System.out.println("Socket Exception beim Versenden aufgetreten.");
		} catch(IOException e) {
			System.out.println("I/O Exception beim Versenden aufgetreten.");
		}
		
		_chatLine.setText("" );
		
	}

und ein Empfangthread soll die Nachrichten annehmen
Code:
	public void run() {
		// while-loop to let the listener continue even after
		// shutdown after IOException
		boolean running = true;
		while(running) {
			try {
				System.out.println("Start receiver thread");
				System.out.print("Listening to ");
				System.out.println(_application.get_msgPort());
				_msgSocket = new DatagramSocket(_application.get_msgPort());
				_msgSocket.setBroadcast(true);
				_msgSocket.setReuseAddress(true);
				byte[] receiveData;
				while(true){
					receiveData = new byte[1024];
					_msg =	new DatagramPacket(receiveData, receiveData.length);
					_msgSocket.receive(_msg );
					System.out.println("Message received");
					updateClient((new String(_msg.getData() )).trim()+"\n" );
				}
			} catch(SocketException e){
				JOptionPane.showMessageDialog(null,"Socket error on port "+_application.get_msgPort()+".\nMaybe another chat client already running?\nNo messages can be received.\nCheck for running clients and restart application.","Socket error",JOptionPane.WARNING_MESSAGE );
				running=false;
				e.printStackTrace();
			} catch(IOException e){
				// not that evil to handled.
			}
		}
	}


Starte ich das Ganze lokal auf meinem Rechner funktioniert es auch wunderbar, aber sobald er meine externe IP benutzt, grüzt das alles.....

Die SYSOUTs da oben sehen so aus:

Message received YOURIP: 84.143.163.92
Set my ip to 84.143.163.92
set my ip 84.143.163.92
Start receiver thread
Listening to 12121
Send msg to 84.143.163.92
Msg sent to 84.143.163.92/12121

Empfangen wird jedoch nichts :(
 

MarcoBehnke

Bekanntes Mitglied
jepp, aber das habe ich ja gesetzt (siehe oben)
Alle Fragen von außen sind gestattet und werden an meine interne IP weitergereicht
 

MarcoBehnke

Bekanntes Mitglied
Ich verstehe den Zusammenhang leider grad nicht?
Ich verschicke die Pakete auf den richtigen Port an den richtigen Server und habe zudem Broadcast Empfang angeschaltet. Die Firewall schickt alles egal welcher Port oder Dienst an meinen Rechner weiter, der ansonsten keinerlei Schutzmaßnahmen hat.

Warum kommt die Nachricht trotzdem nicht an?
 

MarcoBehnke

Bekanntes Mitglied
ok, wenn man drüber nachdenkt eröffnen sich einem plötzlich die Umstände :-D danke noch mal für den Tip.

Habe ich diese NAT Problem eigentlich nur bei UDP oder auch bei TCP?
 
T

tuxedo

Gast
hab die hole-punching-technik in Java *noch* nicht selbst probiert, war nur "beheistert" von der Möglichkeit.
Weiß schon jemand obs ne fertige Lib dafür gibt?

- Alex
 

HoaX

Top Contributor
wozu? die anzahl code die du dafür brauchst wird bestimmt nicht geringer, was soll man das groß machen in der lib ...
 
T

tuxedo

Gast
Man benutzt ja auch nicht deshalb libs damit man weniger code hat. Es geht ja drum das rad nicht neu zu erfinden. Mir gehts dabei auch um Zeitersparnis.
 

MarcoBehnke

Bekanntes Mitglied
hoax.... irgendwie bringt mich das der Lösung nicht näher?

Ich habe jetzt mal das Internet durchforstet und diese JStun geschicht scheint wohl genau das Richtige dafür zu sein.

Hat schon mal jemand damit gearbeitet? Die Dokumentation ist ja leider etwas dürftig.... :(
 

ice-breaker

Top Contributor
ich hatte auch mal das Problem und habe es folgendermaßen gelöst:
Es war eine Client-Server-Applikation, jede Sekunde sendete der Client ein Dummy-Paket an den Server ebenso der Server an den Client (bitte eine fortlaufende id reinpacken, denn mit immer gleichen Daten funzt es net bei jedem Router) und schon war das Problem gelöst, alle Pakete sowohl raus und rein funktionierten ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
K Tabelle im Web über Listener aufrufen Netzwerkprogrammierung 1
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
B Zip Dateien über FTP laden Netzwerkprogrammierung 2
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
M Erstelltes Programm über Internet Browser ausführen Netzwerkprogrammierung 26
T VPN-Verbindung über Java Netzwerkprogrammierung 4
V Einfachen Javaserver über das Internet erreichbar machen Netzwerkprogrammierung 2
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
V einfaches hin und her von Text über Server Netzwerkprogrammierung 2
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
antonbracke Multiuser Software über XMPP Server Netzwerkprogrammierung 1
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
cezary Socket ServerSocket starten über GUIIm unterstehenden Code versuche Netzwerkprogrammierung 6
I ASCII über serielle Schnittstelle Netzwerkprogrammierung 1
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
T Socket Methoden über Internet aufrufen Netzwerkprogrammierung 1
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S Datei schreiben über Applet Netzwerkprogrammierung 8
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
A TCP über UDP Verbindung? Netzwerkprogrammierung 10
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
D JNLP über Webstart funktioniert nicht... Netzwerkprogrammierung 2
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
A Computer über Internet verbinden Netzwerkprogrammierung 12
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
V Authentifikation über mehrere Server? Netzwerkprogrammierung 3
C Verbindung zu einem Hostrechner über das Internet herstellen Netzwerkprogrammierung 15
M Map über Webservice übertragen Netzwerkprogrammierung 3
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
P Socket Verbindung über das Internet Netzwerkprogrammierung 2
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
ruffio1978 Telnet über ein socket ansprechen Netzwerkprogrammierung 8
F Socket Verbindungen über mehrere Server Netzwerkprogrammierung 4
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
G Klassen über JMX per URLClassloader laden? Netzwerkprogrammierung 2
E Zwei PCs über das Internet miteinander verbinden? Netzwerkprogrammierung 3
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
E Java über Socket ins Internet? Netzwerkprogrammierung 4
F Socket Daten über verschiedene IP's schicken Netzwerkprogrammierung 5
M Socket JavaProg über einen Clienten steuern Netzwerkprogrammierung 5
M Mail über Exchange versenden Netzwerkprogrammierung 13
F C/S über HTTPS Netzwerkprogrammierung 2
D ...class.getResourceAsStream("/meine.properties") funktioniert nicht über RMI? Netzwerkprogrammierung 3
M ganymed-ssh2.har: ftp-Verbindung über ftp-Proxy Netzwerkprogrammierung 2
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
Z File über Socket lesen Netzwerkprogrammierung 3
A HTTP Binärdaten über PHP-Skript in Datenbank schreiben bzw auslesen Netzwerkprogrammierung 2
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
P FTP isFile() über FTP Netzwerkprogrammierung 3
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
F Char über Netzwerk senden Netzwerkprogrammierung 6
S HTTP Login mit CAS Authentisierung über SSL Netzwerkprogrammierung 2
C Befehle über ein GUI an Server senden Netzwerkprogrammierung 15
M Socket Datei über Socket versenden Netzwerkprogrammierung 5
I Objekte über das Netzwerk Netzwerkprogrammierung 5
M Google Translate über Java ansprechen? Netzwerkprogrammierung 13
F Socket ImageIcon über Socket --> Fehler Netzwerkprogrammierung 14
N Datenaustausch zwischen Java-GUI und PHP-Programm über SOAP Netzwerkprogrammierung 19
L RMI Informationen über die Clients herausfinden Netzwerkprogrammierung 5
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
1 Kommunikation mit externem Programm über TCP Netzwerkprogrammierung 2
U Informationen über Netzwerkclients herausfinden Netzwerkprogrammierung 2

Ähnliche Java Themen


Oben