[Java] Performance Problem beim Senden über netzwerk

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von SchOudeBläS, 22. November 2008 .

  1. 22. November 2008
    Performance Problem beim Senden über netzwerk

    hi,

    ich habe ne kleine Versuchsapp geschrieben in der ich eine Verbindung zur Serverapp aufbaue und dann eine Datei sende.

    Das klappt auch alles wunderbar nur die geschwindigkeit lässt zu wünschen übrig.

    Woran kann das liegen ?

    Hier der Code zum senden :

    Code:
    File fts = new File(command.substring(5));
    
     sock = new java.net.Socket(serverIPname, serverPort); // create socket and connect
    
     br = new java.io.BufferedReader(new java.io.InputStreamReader(sock.getInputStream()));
    
     pw = new java.io.PrintWriter(sock.getOutputStream(), true); // create reader and writer 
    
     out("Connected to Server");
    
     pw.println("send " + fts.getName());
    
    
     DataOutputStream dos = new DataOutputStream(sock.getOutputStream());
    
     FileInputStream fis = new FileInputStream(fts);
    
     jProgressBar1.setMaximum(fis.available());
    //hier ist das senden
     Rectangle progressRect = null;
     int i = 0;
     int count = 0;
     while ((i = fis.read()) != -1) {
     dos.write(i);
     count++;
     jProgressBar1.setValue(count);
     progressRect = jProgressBar1.getBounds();
     progressRect.x = 0;
     progressRect.y = 0;
     jProgressBar1.paintImmediately(progressRect);
     }
    
     dos.flush();
     dos.close();
     fis.close();
    
     out("Datei gesendet!");
    
     pw.close(); // close everything
    
     br.close();
    
     sock.close();
    
     out("Connection closed");
    
    
    Und hier der Code des Servers zum empfangen:

    Code:
    is = new DataInputStream(clientSocket.getInputStream());
     File tmpFile = new File(filename);
     FileOutputStream fos = new FileOutputStream(tmpFile);
    
     System.out.println("Recieving File >" + filename);
    
     int i = 0;
     while ((i = is.read()) != -1) {
     fos.write(i);
     }
     fos.flush();
     fos.close();
     is.close();
    
     System.out.println("File Recieved >" + filename);
     pw.println("File Recieved >" + filename);
    Ich hoffe und könnt mir helfen bzw. ein paar Tipps geben.

    Vielen Dank
     
  2. 24. November 2008
    AW: Performance Problem beim Senden über netzwerk

    hat wirklich niemand ne ahnung
    oda inen tipp den ich dann verfolgen könnte
     
  3. 24. November 2008
    AW: Performance Problem beim Senden über netzwerk

    Ich blicke leider durch die Syntax von Java überhaupt nicht. Trotzdem kann ich dir sagen, dass es ein häufiges Problem ist, dass die Daten Byteweise gelesen und Versendet werden. Du musst die Programmlogik darauf ausrichten die Daten Blockweise zu verarbeiten. Lies also zunächst 1KB Daten ein und versende diese dann auch Blockweise.
    Ansonten schau dir doch mal deine Prozessorauslastung an. Wenn die auf 100% hochgeht weisst du bescheid
     
  4. 25. November 2008
    AW: Performance Problem beim Senden über netzwerk

    thx für deine antwort

    auslastung geht nicht auf 100% oda bleibt ganz normal bei 1-4%

    hättest du vll ein beispiel in ner anderen sprache wo das 1kb versenden angewand wird

    wäre sehr hilfreich danke
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.