1. #1
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard java.lang.NegativeArraySizeException

    Hallo

    Ich hab mal wieder ein Problem in Java..

    Ich möchte einen String über Socket senden klappt auch wunderbar nur sobald die lange meines Strings über 127 Zeichen ist bekomme ich eine java.lang.NegativeArraySizeException



    PHP-Code:

     OutputStream  out 
    socket.getOutputStream();

     .... 
      
         
          
    String message  "Dies ist ein String mit 127 Zeichen"// Beispiel!
          
    String message1 "Dies ist ein String mit mehr als 127 Zeichen"// Beispiel!

    // senden 

     
    send(message.length(),message.getBytes()); Wird gesendet
     send
    (message1.length(),message1.getBytes()); Nicht

     
    private void send(int length,byte[] s) {
            try {
                             
                 
    out.write(length);             
                 
    out.write(s);
                 
                 
            } catch (
    Exception ex) {
               
    System.out.println(ex.getMessage());
            }
        }

    // lesen 
     
     
    ...

     
    InputStream in socket.getInputStream();

     
    byte length =  (bytein.read();   //  
     
    byte[] bytes = new byte[(int) length];
     
    in.read(bytes);   <-java.lang.NegativeArraySizeException
     System
    .out.println(new String(bytes)); 
    Ja ich weiß das ich es auch anders machen könnte BufferedReade, PrintWriter ect.


    while( behappy() ) { code(); }

  2. #2
    Avatar von Gnome
    Registriert seit
    14.04.2012
    Beiträge
    75
    Thanked 34 Times in 24 Posts

    Standard AW: java.lang.NegativeArraySizeException

    mach mal erst getBytes()
    und davon sendest du die Length
    aber das verursacht nicht den Fehler.


    Code:
    The behavior of this method when this string cannot be encoded in the default charset is unspecified. The CharsetEncoder class should be used when more control over the encoding process is required.

    Versuche also getBytes("UTF-8");
    oder wirklich den CharsetEncoder
    Geändert von Gnome (27.04.2012 um 11:42 Uhr)
    Programmier-Support nur in klar formulierten Threads.


    Ich helfe beim Programmieren nicht per PN oder Teamviewer. Sämtliche Anfragen werden ignoriert.

  3. #3
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard AW: java.lang.NegativeArraySizeException

    hab ich leider auch schon versucht jedoch der gleiche Fehler..


    while( behappy() ) { code(); }

  4. #4
    Avatar von Gnome
    Registriert seit
    14.04.2012
    Beiträge
    75
    Thanked 34 Times in 24 Posts

    Standard AW: java.lang.NegativeArraySizeException

    //siehe mein edit


    ACHJA, ich verstehe nicht warum du in der send Methode die Length übergibst, wenn du eh die ganzen Bytes rausschreibst... ist also da relativ unnötig


    /edit:
    Und ich weiß wo der Fehler ist... du kannst nicht einfach so das in.read in Byte umwandeln....
    du musst die ersten 4 Bytes lesen und dann in Int konvertieren
    Byte hat maximal 256 werte..... da es signed ist.. -128 bis 127.....


    Code:
    
    
    public void writeInt(int v) {
                out.write(v >> 24);
                out.write(v >> 16);
                out.write(v >> 8);
                out.write(v);
    }
     public int readInt() {
                int char1 = in.read();
                int char2 = in.read();
                int char3 = in.read();
                int char4 = in.read();
                return ((char1<<24)|(char2<<16)|(char3<<8)|(char4));
    
    }
    Geändert von Gnome (27.04.2012 um 11:53 Uhr)
    Programmier-Support nur in klar formulierten Threads.


    Ich helfe beim Programmieren nicht per PN oder Teamviewer. Sämtliche Anfragen werden ignoriert.

  5. The Following User Says Thank You to Gnome For This Useful Post:

    uncopyable (27.04.2012)

Ähnliche Themen

  1. Faltvorlage für DIN-lang Umschlag
    Von TomatenKetchup im Forum RealLife
    Antworten: 1
    Letzter Beitrag: 03.03.2014, 03:12
  2. Antworten: 8
    Letzter Beitrag: 02.12.2013, 23:41
  3. Antworten: 4
    Letzter Beitrag: 07.11.2013, 19:31
  4. java.lang.NoClassDefFoundError: com/sun/deploy/appcontext/AppCont
    Von knotenpunkt im Forum Knuddels Programmierung
    Antworten: 0
    Letzter Beitrag: 28.11.2012, 23:32
  5. Video ist immer zu lang
    Von x BoooM x im Forum Sonstige
    Antworten: 0
    Letzter Beitrag: 21.03.2012, 19:34
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.