Thema: [Java] PacketWriter
-
02.02.2012, 16:13 #1
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 Posts[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(); } }
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)
-
02.02.2012, 16:17 #2
- Registriert seit
- 19.12.2011
- Beiträge
- 356
Thanked 164 Times in 101 PostsAW: [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.
-
02.02.2012, 16:20 #3
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: [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)
-
02.02.2012, 16:22 #4
- Registriert seit
- 19.12.2011
- Beiträge
- 356
Thanked 164 Times in 101 PostsAW: [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.
-
02.02.2012, 16:27 #5
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: [Java] PacketWriter
Code:public void writeInt(int v) { write(v >> 24); write(v >> 16); write(v >> 8); write(v); }
-
18.04.2012, 20:02 #6
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((char) v);
}
public void writeChar(char c) { writeChar(c,true); }
public void writeChar(char c, boolean writeNull) {
write(c);
if(writeNull)
write(0x00);
}
public void writeint(int v) { writeInt(v,true); }
public void writeInt(int v, boolean writeNull) {
write(v >> 24);
write(v >> 16);
write(v >> 8);
write(v);
if(writeNull)
write(0x00);
}
public void writeBoolean(boolean v) { writeBoolean(v,true); }
public void writeBoolean(boolean v, boolean writeNull) {
write(v ? 1 : 0);
if(writeNull)
write(0x00);
}
public void writeShort(int v) { writeShort(v,true); }
public void writeShort(int v, boolean writeNull) {
write(v >> 8);
write(v);
if(writeNull)
write(0x00);
}
public void writeString(String v) { writeString(v,true); }
public void writeString(String v, boolean writeNull) {
for(char c : v.toCharArray()) {
write(c);
}
if(writeNull)
write(0x00);
}
@Override
public String toString() {
return buffer.toString();
}
}
Ähnliche Themen
-
Neuerungen in Java 8
Von Nuebel im Forum JavaAntworten: 9Letzter Beitrag: 25.12.2018, 02:54 -
Win7 Java in Safari ausführen (Fehlermeldung Java nicht installiert)
Von Silverstar im Forum WindowsAntworten: 8Letzter Beitrag: 02.12.2013, 23:41 -
Java EE 32 Bit?
Von Pwned im Forum JavaAntworten: 2Letzter Beitrag: 04.08.2012, 23:08 -
Ubuntu Sun Java
Von hYpercrites im Forum LinuxAntworten: 3Letzter Beitrag: 20.06.2012, 15:17 -
[Java] Timer
Von rVs14 im Forum JavaAntworten: 1Letzter Beitrag: 16.06.2012, 12:13
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.