package example; import java.nio.ByteBuffer; import gdwNet.server.BasicClientConnection; import gdwNet.server.BasicServer; import gdwNet.server.ConnectionInfo; import gdwNet.server.GDWServerLogger; import gdwUtils.DefaultCharSet; /** * Eine Beispielimplementierung für einen Clientverbindungsklasse. * * Sie nimmt nur Chatnachrichten entgegen und leitet dies an die ServerCoreLoop weiter. * @author firen * */ public class MyBasicClientConnection extends BasicClientConnection { protected final String name; public MyBasicClientConnection(ConnectionInfo info, BasicServer ref, String name) { super(info, ref); this.name = name; } @Override /** * Diese Methode muss implementiert werden. Hier wird euer Netzwerkprotokol implementiert. * Haltet euch am besten an diesem Beispiel und fügt einfach neue case-Teile hinzu. * @param msg der ByteBuffer der übergeben wird * @param wasSafe Wurde die Nachricht über Tcp = true oder UDP = false versendet. Sofern es euch intressiert^^ */ protected void incommingMessage(ByteBuffer msg, boolean wasSafe) { //lese Nachrichten code aus switch (msg.get()) { case MyMessageConstants.ChatMessage: this.encodeChatmessage(msg); break; default: msg.position(msg.position() - 1); GDWServerLogger.logMSG("Unbekannte Nachricht" + msg.get()); break; } } /** * Es wurde eine Chatnachricht gesendet. * Ich lese sie aus und leite sie weiter an die ServerCoreLoop * @param msg Die Nachricht */ private void encodeChatmessage(ByteBuffer msg) { //lese die Anzahl der bytes aus byte size = msg.get(); byte[] arr = new byte[size]; //fülle das byte array msg.get(arr); //wandele das ByteArray in einen String um. Nutze dafür das defaultcharset, //welches schon definiert ist^^ String message = new String(arr, DefaultCharSet.getDefaultCharset()); //sende meiner Serverklasse die Nachricht ((ChatServer) this.ref).chatIncom(this.name, message); } }