Hallo zusammen,
ich hab ein Performance Problem mit UDP.
Hab zu diesem Thema im Zusammenhang mit java3D letztes Jahr schon mal was gepostet,
bin aber leider immer noch zu keinem Ergebnis gekommen.
Ich hab zwei Klassen data, receive. Eigentlich ganz simple: receive Liest Daten ein,
data schreibt sie auf die Konsole. Soweit so gut.
Mein Problem: Das ganze wird langsamer und wieder schneller!!!
Man kann also in der Konsole sehen, die Zeilen mit den Daten laufen erst schnell
und dann immer langsamer, dann wieder schneller und so weiter. Sieht so aus als ob
ein Speicher voll läuft, o.ä. Das ganze wird später für mich Problematisch, da ich mit den Daten
Grafik animiere --> Das führt also zu ruckeln, stocken der Bewegung, etc. aber das ist ja erst mal egal:
Probleme sieht man schon nur bei der Ausgabe auf der Konsole.
Hab ich was falsch gemacht, oder sonst irgendwelche Ideen??????????
Danke schonn mal !
Gruß RobDom
PS: Muss bei UDP bleiben.
ich hab ein Performance Problem mit UDP.
Hab zu diesem Thema im Zusammenhang mit java3D letztes Jahr schon mal was gepostet,
bin aber leider immer noch zu keinem Ergebnis gekommen.
Ich hab zwei Klassen data, receive. Eigentlich ganz simple: receive Liest Daten ein,
data schreibt sie auf die Konsole. Soweit so gut.
Mein Problem: Das ganze wird langsamer und wieder schneller!!!
Man kann also in der Konsole sehen, die Zeilen mit den Daten laufen erst schnell
und dann immer langsamer, dann wieder schneller und so weiter. Sieht so aus als ob
ein Speicher voll läuft, o.ä. Das ganze wird später für mich Problematisch, da ich mit den Daten
Grafik animiere --> Das führt also zu ruckeln, stocken der Bewegung, etc. aber das ist ja erst mal egal:
Probleme sieht man schon nur bei der Ausgabe auf der Konsole.
Hab ich was falsch gemacht, oder sonst irgendwelche Ideen??????????
Danke schonn mal !
Gruß RobDom
PS: Muss bei UDP bleiben.
Code:
public class data extends JFrame implements Runnable{
public static float[] data = new float[10];
public static TextArea console = new TextArea();
public data() {
for (int i=0; i<10; i++) {
data[i]= 0;
}
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setMinimumSize(this.getToolkit().getScreenSize());
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
this.setLayout(new BorderLayout());
this.add("Center",console);
this.repaint();
this.setVisible(true);
this.run();
}
public void run(){
while (true){
new receive();
for (int i=0; i<10; i++) {
console.append(data[i] + " ");
}
console.append("\n____________________________________\n");
}
}
public static void main(String[] args) {
new data();
} // end main
}
Code:
public class receive{
public static int port = 2500;
public static InetAddress ip = null;
public static DatagramPacket datagramPacket = null;
public static DatagramSocket datagramSocket = null;
public static byte[] inbuffer = new byte[120];
public ByteBuffer byteBuffer = ByteBuffer.allocate(120);
public static boolean init = false;
public receive(){
init();
writeData(byteBuffer);
}
public void init(){
datagramPacket = new DatagramPacket(inbuffer, inbuffer.length, ip, port);
try {
ip = InetAddress.getByName("10.3.71.44");
datagramSocket = new DatagramSocket(port, ip);
}
catch (UnknownHostException e1) {}
catch (SocketException e2) {}
init = true;
}
public static void writeData(ByteBuffer buffer){
try{
datagramSocket.receive(datagramPacket);
buffer = ByteBuffer.wrap(inbuffer, 0, 120);
for (int i=0; i<10; i++) {
data.data[i] = buffer.getFloat(80+i*4);
}
}
catch (UnknownHostException e3) {}
catch (SocketException e4) {}
catch (IOException e5) {}
}
public static void main(String[] args) {
new receive();
} // end main
}