1. #1
    U-Labs Plus-Mitglied

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard [Java] PacketWriter

    Code:
    import java.io.UnsupportedEncodingException;
    
    /**
     *
     * @author Flav
     */
    public class PacketWriter {
    	private StringBuilder buffer;
    
    	public PacketWriter() {
    		buffer = new StringBuilder();
    	}
    
    	public void write(int v) {
    		buffer.append((char) v);
    	}
    
    	public void writeBoolean(boolean v) {
    		write(v ? 1 : 0);
    	}
    
    	public void writeShort(int v) {
    		write(v >> 8);
    		write(v);
    	}
    
    	public void writeString(String v) {
    		writeString(v, false);
    	}
    
    	public void writeString(String v, boolean length) {
    		if (length) {
    			write(v.length());
    		}
    
    		buffer.append(v);
    	}
    
    	public String toString() {
    		return buffer.toString();
    	}
    }
    Die Klasse PacketWriter dient zum Darstellen von Paketen, sowohl für das alte Protokoll mit Tokens und Delimiter als auch für das Neue. Vor allem beim neuen Protokoll kann man auf eine solche Klasse kaum verzichten.

    Beispiel

    e\0Cool\0Flav\0Hallo.

    Code:
    PacketWriter packet = new PacketWriter();
    packet.writeString("e");
    packet.write(0x00);
    packet.writeString("Cool");
    packet.write(0x00);
    packet.writeString("Flav");
    packet.write(0x00);
    packet.writeString("Hallo.");
    groupChat.receive(packet.toString());
    Geändert von Flav (02.02.2012 um 16:35 Uhr)

  2. #2
    Permanent gesperrt

    Registriert seit
    19.12.2011
    Beiträge
    356
    Thanked 164 Times in 101 Posts

    Standard AW: [Java] PacketWriter

    Darf ich fragen warum du bei der Funktion Write nicht gleich als Parameter ein Char nimmst? Würde glaube ich am Ende auch helfen, verwirrung zu vermeiden.

  3. #3
    U-Labs Plus-Mitglied

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard AW: [Java] PacketWriter

    Hast du völlig recht, kann man machen, hab ich nicht dran gedacht damals (die Klasse ist schon mindestens ein halbes Jahr alt).

    Edit: Geht doch nicht, dann muss man beim Übergeben des Parameters zu char casten.
    Geändert von Flav (02.02.2012 um 16:34 Uhr)

  4. #4
    Permanent gesperrt

    Registriert seit
    19.12.2011
    Beiträge
    356
    Thanked 164 Times in 101 Posts

    Standard AW: [Java] PacketWriter

    Kann man eigentlich keine Ints/Longs reinschreiben oder hast du dazu einfach keine Funktion geschrieben. habe vor die nochmal in C# umzuschreiben, deswegen frage ich.

  5. #5
    U-Labs Plus-Mitglied

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard AW: [Java] PacketWriter

    Code:
    public void writeInt(int v) {
    	write(v >> 24);
    	write(v >> 16);
    	write(v >> 8);
    	write(v);
    }
    Long ist selbstverständlich auch möglich, hab aber beides bisher noch nicht gebraucht bei Knuddels (nur bei Beach). Und ja, die Klasse kann auch für Beach verwendet werden.

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

    Standard AW: [Java] PacketWriter

    Falls es wer braucht eine erweiterte Version des PacketWriters. Diese fügt nach einem Write normal das Nullchar hinzu, sollte dies nicht erwünscht sein kann man als 2ten Parameter falls übergeben.
    Ansonsten die writeInt hinzugefügt.

    PHP-Code:
    public class PacketWriter {
        private 
    StringBuilder buffer;

        public 
    PacketWriter() {
            
    buffer = new StringBuilder();
        }

        private 
    void write(int v) {
            
    buffer.append((charv);
        }

            public 
    void writeChar(char c) { writeChar(c,true); }
            public 
    void writeChar(char cboolean writeNull) {
                
    write(c);
                if(
    writeNull)
                    
    write(0x00);
            }
            
            
            public 
    void writeint(int v) { writeInt(v,true); }
            public 
    void writeInt(int vboolean writeNull) {
                
    write(>> 24);
                
    write(>> 16);
                
    write(>> 8);
                
    write(v);
                if(
    writeNull)
                    
    write(0x00);
            }
            public 
    void writeBoolean(boolean v) { writeBoolean(v,true); }
        public 
    void writeBoolean(boolean vboolean writeNull) {
                    
    write(0);
                    if(
    writeNull)
                        
    write(0x00);
        }

            public 
    void writeShort(int v) { writeShort(v,true); }
        public 
    void writeShort(int vboolean writeNull) {
            
    write(>> 8);
            
    write(v);
                    if(
    writeNull)    
                        
    write(0x00);
        }

            public 
    void writeString(String v) { writeString(v,true); }
        public 
    void writeString(String vboolean writeNull) {
            for(
    char c v.toCharArray()) {
                        
    write(c);
                    }
                    if(
    writeNull)
                        
    write(0x00);
        }

        

            @
    Override
        
    public String toString() {
            return 
    buffer.toString();
        }


Ähnliche Themen

  1. Neuerungen in Java 8
    Von Nuebel im Forum Java
    Antworten: 9
    Letzter Beitrag: 25.12.2018, 02:54
  2. Antworten: 8
    Letzter Beitrag: 02.12.2013, 23:41
  3. Java EE 32 Bit?
    Von Pwned im Forum Java
    Antworten: 2
    Letzter Beitrag: 04.08.2012, 23:08
  4. Ubuntu Sun Java
    Von hYpercrites im Forum Linux
    Antworten: 3
    Letzter Beitrag: 20.06.2012, 15:17
  5. [Java] Timer
    Von rVs14 im Forum Java
    Antworten: 1
    Letzter Beitrag: 16.06.2012, 12:13
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191