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:
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
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