Kennt man eigentlich schon vom Emulator und der KN-/KJLib. Bei Knuddels wird die Paketlänge durch X Bytes angegeben, je nachdem wie viele benötigt werden. Ist nicht nur beim Chat so, sondern auch bei Beach. Hab ich dem Client im Dezember entnommen, hatte es auf UH auch mal released.

Lesen
Code:
                        int first = in.read();

                        if (first == -1) {
                            break;
                        }

                        int len;
                        byte b = (byte) first;

                        if (b >= 0) {
                            len = b + 1;
                        } else {
                            len = (b & 0x1F) + 1;
                            int count = (b & 0x60) >>> 5;

                            for (int i = 0; i < count; i++) {
                                len += in.read() << (i << 3) + 5;
                            }
                        }

                        byte[] buffer = new byte[len];

                        for (int i = 0; i < len; i++) {
                            buffer[i] = (byte) in.read();
                        }
Schreiben
Code:
                int len = bytes.length - 1;
                byte[] length;

                if (len < 128) {
                    length = new byte[] { (byte) len };
                } else {
                    int count = 0;

                    while (32 << (count + 1 << 3) <= len) {
                        count++;
                    }

                    count++;
                    length = new byte[count + 1];
                    length[0] = (byte) (count << 5 | 0x80 | len & 0x1F);

                    for (int i = 1; i < length.length; i++) {
                        length[i] = (byte) (len >>> 8 * (i - 1) + 5);
                    }
                }

                byte[] buffer = new byte[length.length + bytes.length];
                System.arraycopy(length, 0, buffer, 0, length.length);
                System.arraycopy(bytes, 0, buffer, length.length, bytes.length);