UDP Pakete empfangen ohne Programm zu blockieren

theForm

Neues Mitglied
Hallo,

ich bin hier neu hier und melde mich weil ich eine Frage habe zu der ich seit Tagen keine wirkliche Antwort finde.


Ich bin gerade an einem kleinen Projekt dran wobei es um folgendes geht:
Eine WLAN-Interface-Box sendet mir per WLAN die Daten von nem Feld-Bus als UDP-Pakete.
Diese will ich empfangen und anzeigen in einer GUI.

Soweit so gut, das Problem ist nur erstmal das eigentliche praktikable empfangen.

Nach längerem googeln habe ich folgendes gefunden:

Code:
			  try
			  {
				  DatagramSocket socket = new DatagramSocket( 5001 );
				

					  // Auf Anfrage warten
					  DatagramPacket packet = new DatagramPacket( new byte[1024], 1024 );
				      socket.receive( packet );
				      // Empfänger auslesen
				
				      InetAddress address = packet.getAddress();
				      int         port    = packet.getPort();
				      int         len     = packet.getLength();
				      byte[]      data    = packet.getData();
				
				      System.out.printf( "Anfrage von %s vom Port %d mit der Länge %d:%n%s%n",
				                         address, port, len, new String( data, 0, len ) );
				      //String result = new String( data, 0, len );
				      //return new String(data, 0, len);   
	

			  }
			  catch(IOException e2)
			  {
				  System.out.println("IOException");
				  System.out.println(e2);
			  }

Funktioniert auch wunderbar, ich schick was an Port 5001, wird mir angezeigt, alles bestens :)

Nur wird eben das ganze Programm blockiert bis ein Paket ankommt, nur ist das nicht so richtig das Ziel was ich erreichen wollte.

Die GUI soll auch währenddessen bedienbar sein.
Was ich bereits herausgefunden habe ist dass ich wohl mit Threads arbeiten muss.

Ich habe in meinem Studium zwar bereits mit C# gerarbeitet, aber so richtig klar wass ich da machen muss ist mir noch nicht so ganz klar.

Hat jemand eine Idee nach was ich denn da so suchen kann?
Ich glaub ich such einfach immer nach dem falschen, kann mir nicht vorstellen dass sowas sonst niemand braucht.

In C# ist das wohl rel einfach, da definiert man einfach ne Funktion die bei nem ankommenden Paket aufgerufen wird und dann gehts von dort aus weiter.

Aber in Java muss man das wohl alles noch "händisch" lösen, nur hab ich noch kein wirklich Plan wie.


Über Tipps wär ich schon sehr dankbar :)


Gruß
David
 

theForm

Neues Mitglied
Zubächst vielen Dank für deine Antwort.

Dass ich daraus einen extra Thread machen muss war mir schon klar, das hab ich bereits rausgefunden, die passende klasse habe ich auch bereits dazu gemacht:


Java:
public class UDPReceiver extends Thread
{
	  public void run()
	  {     	  	  
			  try
			  {
				  DatagramSocket socket = new DatagramSocket( 5001 );
				

					  // Auf Anfrage warten
					  DatagramPacket packet = new DatagramPacket( new byte[1024], 1024 );
				      socket.receive( packet );
				      // Empfänger auslesen
				
				      InetAddress address = packet.getAddress();
				      int         port    = packet.getPort();
				      int         len     = packet.getLength();
				      byte[]      data    = packet.getData();
				
				      System.out.printf( "Anfrage von %s vom Port %d mit der Länge %d:%n%s%n",
				                         address, port, len, new String( data, 0, len ) );
				      //String result = new String( data, 0, len );
				      //return new String(data, 0, len);   
	

			  }
			  catch(IOException e2)
			  {
				  System.out.println("IOException");
				  System.out.println(e2);
			  }			  
	  }
}

Das hab ich bereits kapiert
Nur was mach ich jetzt damit?

Wie muss ich das aufrufen? So dass nebenher auch noch was anderes gemacht werden kann?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Socket DNS Update Pakete empfangen Netzwerkprogrammierung 3
N Socket Pakete vom Server decodieren Netzwerkprogrammierung 10
staxx6 Mehr/ kleine oder Weniger/ große Pakete? Netzwerkprogrammierung 8
S HTTP Pakete Auslesen Netzwerkprogrammierung 22
A UDP verlorene Pakete/ socket.receive zu langsam Netzwerkprogrammierung 27
S UDP Broadcast - Pakete kommen nicht immer an Netzwerkprogrammierung 15
Dit_ UDP Pakete prüfen, sortieren Netzwerkprogrammierung 20
F UDP Server - mehrere Pakete auf einmal Netzwerkprogrammierung 12
K CRC geprüfte UDP Pakete.. Netzwerkprogrammierung 14
H TCP "verlorene Pakete" Netzwerkprogrammierung 8
S HttpURLConnection POST splittet Daten in zwei Pakete Netzwerkprogrammierung 9
S Tool zum Beobachten der Pakete Netzwerkprogrammierung 7
W UDP Pakete abfangen Netzwerkprogrammierung 3
G UDP Packet empfangen funktioniert nicht. Netzwerkprogrammierung 16
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
X Daten können nicht sofort empfangen werden Netzwerkprogrammierung 1
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
B Nach Verbindung gleich ObjectStream empfangen Netzwerkprogrammierung 1
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
1 Datei senden/empfangen funzt nicht... Netzwerkprogrammierung 5
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
P Server/Client Daten empfangen, wenn Daten gesendet werden Netzwerkprogrammierung 9
B Socket Daten empfangen funktioniert nicht richtig - wo liegt der Fehler? Netzwerkprogrammierung 7
KeNnY_tHe_OwNeR Empfangen geht, Senden nicht ?! Netzwerkprogrammierung 18
B Befehle an Gameserver senden bzw. empfangen Netzwerkprogrammierung 2
M Client/Server Antwort von Server empfangen Netzwerkprogrammierung 6
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
I Problem beim empfangen von Daten (Zahlen) Netzwerkprogrammierung 7
H Empfangen von Strings Netzwerkprogrammierung 14
A String per ByteBuffer empfangen? Netzwerkprogrammierung 6
M TCP Socket und Server int senden und empfangen Netzwerkprogrammierung 6
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
F Datei senden und empfangen Netzwerkprogrammierung 4
D DatagramSocket Empfangen Textarea Netzwerkprogrammierung 2
M Vom Server per Socket Empfangen, aber wieviel Bytes? Netzwerkprogrammierung 11
TRunKX Hilfe beim senden und empfangen Netzwerkprogrammierung 2
D Performance Problem beim File senden, empfangen Netzwerkprogrammierung 4
S senden und empfangen von Objekten? Netzwerkprogrammierung 7
T TCP mit und ohne Threads Netzwerkprogrammierung 1
V Socket Audio Clip loopen ohne neuen Thread Netzwerkprogrammierung 2
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
Q-bert Link zugang ohne login sperren. Netzwerkprogrammierung 1
L Socket Zwei Computer im gleichen Netwerk ohne Portforwarding ? Netzwerkprogrammierung 12
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
B JSch Filetransfer ohne KnownHosts Datei? Netzwerkprogrammierung 0
D GZIP InputStream lesen ohne zu encoden Netzwerkprogrammierung 1
D Zugriff auf Webinhalte ohne visuelles Öffnen der Website Netzwerkprogrammierung 2
T Anwendungseinstellungen ohne Datei übertragen? Netzwerkprogrammierung 8
B Socket BufferedImage senden "ohne speichern" Netzwerkprogrammierung 7
N (TCP) Verbindung ohne Portforwarding Netzwerkprogrammierung 12
B Socket BufferedReader.readLine() beenden ohne den Stream zu closen Netzwerkprogrammierung 7
D Mit wsimport erstellte Klassen ohne WSDL nutzen Netzwerkprogrammierung 4
T Datei downloaden ohne den Dateinamen zu kennen Netzwerkprogrammierung 2
D RMI Gui auf client updaten basierend auf den Property Änderung des Models auf dem Server ohne polling Netzwerkprogrammierung 12
B FTP Datei auslesen ohne einloggen möglich? Netzwerkprogrammierung 19
E RMI ohne Portforwarding? Netzwerkprogrammierung 2
M Ping mehrerer Ports aus int[] ohne for-Schleifendurchlauf Netzwerkprogrammierung 11
C Login ohne Erfolg Netzwerkprogrammierung 2
L einfacher server ohne threads Netzwerkprogrammierung 4
P RMI ohne Security Netzwerkprogrammierung 5
J Client ohne Server? Netzwerkprogrammierung 7
K Socket Daten lesen ohne Längenangabe Netzwerkprogrammierung 19
0 soap client ohne WSDL Netzwerkprogrammierung 3
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
E DatagramSocket rausfinden ob recive möglich ohne zu blocken Netzwerkprogrammierung 10
O Webservice ohne Eclipse laufen lassen Netzwerkprogrammierung 3
T Server ohne Port Netzwerkprogrammierung 4
L RMI Programm beendet ohne Fehler sofort nach Start (Windows 2000) Netzwerkprogrammierung 7
C imap/java emails checken ohne runterzuladen? Netzwerkprogrammierung 3
T ohne Port Freigabe. Netzwerkprogrammierung 6
P P2P ohne Portfreigabe Netzwerkprogrammierung 12
J Client-Client-Chat ohne Serverbeteiligung Netzwerkprogrammierung 2
G Connection zu MySQL ohne ODBC Netzwerkprogrammierung 8
G TCP Verbindung überprüfen OHNE daten zu verschicken Netzwerkprogrammierung 11
T select() ohne NIO - oder wie Worker-Thread sauber beenden? Netzwerkprogrammierung 9
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
R RMI: Remote Object ohne Naming Service benutzen? Netzwerkprogrammierung 2
K RMI ohne Kommandozeileneingabe Netzwerkprogrammierung 9
M Ende des Streams ohne Schließen/Checksumme mitsenden Netzwerkprogrammierung 2
G SSL Verbindung ohne Zertifikat Netzwerkprogrammierung 9
D Timeouts ohne Ende bei SMTP und FTP Netzwerkprogrammierung 3
M Client-Kommunikation ohne Server Netzwerkprogrammierung 7
M schreiben auf geschlossenen Socket ohne Exception Netzwerkprogrammierung 6
A server mit 2 Ports : Mit und ohne SSL Chat system Netzwerkprogrammierung 10
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
J Vom BufferedReader lesen -> hängt ohne Fehler,ohne Except Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben